Zend_Auth结合Zend_Auth_Storage_Session实现session的持久身份认证,主要有一下几点:
1、先做个适配器,也就是自己用来验证用户的类,如:
class AuthAdapter implements Zend_Auth_Adapter_Interface{
var $username;
var $password;
/**
* Sets username andpassword for authentication
* @return void
*/
public function __construct($username='', $password=''){//
$this->username = $username;
$this->password = $password;
}
/**
* Performs an authentication attempt
* @throws Zend_Auth_Adapter_Exception If authentication cannot be performed
* @return Zend_Auth_Result
* Zend_Auth_Result::SUCCESS
* Zend_Auth_Result::FAILURE
* Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND
* Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS
* Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID
* Zend_Auth_Result::FAILURE_UNCATEGORIZED
*/
public function authenticate(){
$aryInfo;
if (isset($this->username) && (isset($this->password))){
$aryInfo[0] = _e('验证正确');
return new Zend_Auth_Result(1,$aryInfo);
}else{
$aryInfo[0] = _e('验证失败');
return new Zend_Auth_Result(-1,$aryInfo);
}
}
}
2、在获取一个Zend_Auth的实例
$auth = Zend_Auth::getInstance();3、创建认证session的命名空间,并放到Zend_Auth的实例的存储器中$auth->setStorage(new Zend_Auth_Storage_Session('someNamespace'));4、加入上面的认证适配器实例:include ('../classes/authadapter.class.php');
$authAdapter = new AuthAdapter('usrname', 'pwd');
$result = $this->_auth->authenticate($authAdapter);
5、判断验证结果:
if (!$result->isValid()) {
foreach ($result->getMessages() as $message){
echo "$message\n";
}
}else{
foreach ($result->getIdentity() as $message){
echo "$message\n";
}
}
如果在其他页面去验证的时候直接调用一个方法就可以验证了:
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('sessionAuth'));
if ($auth->hasIdentity()){
$identity = $auth->getIdentity();
echo '认证';
}else{
echo '未认证';
foreach ($auth->getIdentity() as $message){
echo "$message\n";
}
其实按照我的理解,采用什么样的方式去验证,只要在适配器验证方法中去决定就可以了...
对于身份持久,最好与ACL配合好使用才好...否则对于权限和资源的访问控制还是会有很多问题...
还有一个重要的问题,从根本上来讲,无论那种验证方式,还都是和session有很大关系的,除非在每次验证的时候都去调用验证的原始方法,而不是只根据验证session中取出来的值,当然,session中的值会作为验证信息的依据。
转自:http://hi.baidu.com/garrych/blog/item/6083c423e2889e42ad34ded4.html
分享到:
相关推荐
一个简单的zend_acl和Zend_auth的应用。对于初学zf框架的人有一定的帮助。
google_auth-1.23.0-py2.py3-none-any.whl python 包 google_auth-1.23.0-py2.py3-none-any.whl python 包 google_auth-1.23.0-py2.py3-none-any.whl python 包google_auth-1.23.0-py2.py3-none-any.whl python 包 ...
•Getting Started with Zend_Session, Zend_Auth, and Zend_Acl •Getting Started with Zend_Search_Lucene •Getting Started with Zend_Paginator •Zend Framework Reference •Zend_Acl •Zend_Amf •...
wegame_auth.dll
sqljdbc_auth.dll 支持64位,在Java程序使用SSL加密方式连接到sqlserver时非常有用。
mod_auth_mysql-3.0.0.tar.gz
ion_auth ion_auth数据库代码
mod_auth_sspi-1.0.2-2.0.54.zip mod_auth_sspi-1.0.2-2.0.54.zip
3. Zend_Auth 3.1. 简介 3.1.1. 适配器 3.1.2. 结果 3.1.3. 身份的持久(Persistence) 3.1.3.1. 在PHP Session 中的缺省持久(Persistence) 3.1.3.2. 实现订制存储 3.1.4. 使用Zend_Auth 3.2. 数据库表...
auth0-1.5.0_auth0-1.5.0_
用源码编译生成的Apache的扩展模块,可进行MySQL数据库认证。使用:放到modules下,在conf文件中加入 LoadModule mysql_auth_module modules/mod_auth_mysql.so重启服务即可
资源分类:Python库 所属语言:Python 资源全名:google_auth-1.12.0-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
sqljdbc_auth.dll 支持32位系统,在Java程序使用SSL加密方式连接到sqlserver时非常有用。
php用法Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证_.docx
ep_auth_session 一个适用于小脚本,它提供一个路由,该路由使用提供的sessionID参数对用户进行身份验证并重定向到给定的padName。 将etherpad集成到另一个域上的应用程序时很有用。 安装 重新启动您的etherpad-...
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
sqljdbc_auth.dll
其它组件如 Zend_Auth 和 Zend_Acl 通过通用 的证书(credential)存储提供用户认证和授权。还有其它实现的客户库来简化访问最流行的可用的 web 服务。 不论你的程序需要什么,你都可能从 Zend Framework 中找到经过...
外网软件 mtk线刷授权 mtk机型解锁 super解包等 自带图文翻译与操作动画 解密bbs.ydss.cn
windows 集成身份认证。http://web.mit.edu/ghudson/old/dev/nokrb/third/samba/docs/htmldocs/ntlm_auth.1.html