`

Zend_Auth结合Zend_Auth_Storage_Session实现session的持久身份认证

    博客分类:
  • php
 
阅读更多

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的简单应用

    一个简单的zend_acl和Zend_auth的应用。对于初学zf框架的人有一定的帮助。

    Zend+Auth入门教程v0[1].01.pdf

    `Zend_Auth`是`Zend Framework`中用于实现身份验证的重要组件。本教程旨在帮助初学者了解如何使用`Zend_Auth`进行基本的身份验证操作,包括用户登录、登出等关键流程。此教程基于`Zend Framework`1.5.x版本编写,...

    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 包google_auth-1.23.0-py2.py3-none-any.whl python 包 ...

    mod_auth_mysql-3.0.0.tar.gz

    Apache服务器是世界上最流行的Web服务器软件,而`mod_auth_mysql`则是其一个强大的扩展模块,它允许Apache服务器通过MySQL数据库进行用户认证,从而实现灵活的权限管理和用户管理。本文将深入探讨`mod_auth_mysql-...

    ZEND FRAMEWORK 1.11.7 中文参考文档

    •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 •...

    最新版的Zend_Framework 手册 中文版

    11. **安全性**:包含如Zend_Http_Client、Zend_Captcha、Zend_Auth等组件,提供安全的HTTP请求、验证码功能以及身份验证机制。 **手册内容概览** - **入门指南**:介绍如何开始一个新的Zend Framework项目,包括...

    mod_auth_sspi-1.0.2-2.0.54.zip

    其中,mod_auth_sspi是Apache的一个重要模块,专用于Windows环境,实现了集成Windows安全认证(Integrated Windows Authentication,IWA)的功能。本文将深入探讨mod_auth_sspi的原理、配置以及实际应用场景。 **1....

    wegame_auth.dll

    wegame_auth.dll

    mysql_auth-0.8.tar.gz_Squid!_auth-0.8.tar.gz_mysql_auth_mysql_au

    MySQL Auth for Squid是本文将深入探讨的主题,它是一个用于Squid缓存代理服务器的认证模块,使得用户可以通过MySQL数据库进行身份验证。这个软件包的版本为0.8,包含在"mysql_auth-0.8.tar.gz"和"Squid!_auth-0.8....

    Flutter_Ali_Auth_Plugin_阿里云一键登录Flutter插件_flutter_ali_auth.zip

    Flutter_Ali_Auth_Plugin_阿里云一键登录Flutter插件_flutter_ali_auth

    lighttpd的权限认证模块 mod_auth

    `mod_auth`是lighttpd中的身份验证模块,它遵循HTTP协议的认证机制,支持两种主要的认证方式:基本认证(Basic Authentication)和摘要认证(Digest Authentication)。基本认证直接在HTTP头部传递明文用户名和密码...

    emq_auth_redis.tar.gz

    在本压缩包“emq_auth_redis.tar.gz”中,包含了一个使用 Redis 作为身份验证和授权插件的配置,用于增强 EMQ 的安全性和管理能力。Redis 是一个开源的、基于键值的数据存储系统,常用于缓存、数据库和消息队列等...

    dx_auth权限认证插件

    在CI框架中,dx_auth插件通过实现用户身份验证和授权流程,帮助开发者轻松管理用户账户和权限。它包含了用户注册、登录、登出、密码重置等基本功能,同时也支持更复杂的权限控制,如角色基础的访问控制(RBAC)。 1...

    sqljdbc_auth.dll 支持64位

    sqljdbc_auth.dll 支持64位,在Java程序使用SSL加密方式连接到sqlserver时非常有用。

    kerb_module_auth-5.4_samect5_somebodyoev_Kerberos_auth.4pyun.com

    《Kerberos模块认证在C语言中的实现——深入解析mod_auth_kerb-5.4》 Kerberos是一种广泛使用的网络身份验证协议,它通过提供强加密技术来确保通信的安全性。在标题"kerb_module_auth-5.4_samect5_somebodyoev_...

    flutter-local-auth

    flutter_local_auth是一个Flutter插件,用于在移动设备上执行本地身份验证。它支持在iOS和Android设备上使用生物识别认证(例如指纹或面部识别),同时也支持在Android设备上使用指纹API进行身份验证。 要使用...

    php用法Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证_.docx

    本文将详细介绍如何使用 Header 函数、PHP_AUTH_PW 和 PHP_AUTH_USER 实现用户验证。 首先,我们需要在 PHP 中设置 Header 函数,以便在用户访问某个页面时弹出登录框。这种方法称为基本认证(Basic Authentication...

    Zend_Framework_ZH中文手册

    - **Zend_Auth**:提供了身份验证机制,支持多种认证策略,如数据库、HTTP基本认证等。 - **Zend_Db**:提供了一套数据库抽象层,支持多种数据库系统,简化了数据库操作。 - **Zend_Feed**:处理RSS和Atom feed,...

    request_key_auth.rar__auth.requestToken

    在标签"_auth.requesttoken"中,"_auth"暗示了这与认证过程有关,而".requestToken"可能是一个特定的文件名或者API接口,用于生成、存储或验证请求令牌。这样的令牌通常包含一个时效性标识,确保一旦过期,就需要...

Global site tag (gtag.js) - Google Analytics