php中Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制 (1/4)
2013-09-05 19:26
691 查看
Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制 有需要的朋友可参考一下。Zend_Auth_Adapter_Interface中提供了一个接口,我们需要自己去实现
代码如下:
@param int $code 身份认证的结果(如:Zend_Auth_Result::SUCCESS)
@param mixed $identity 用于身份认证的标示符(如:登录名(张三))
@param array $messages 认证失败的原因数组
而一旦认证成功,则将信息存储到session变量中。
1 2 3 4
代码如下:
<?php require_once 'Zend/Auth/Adapter/Interface.php'; class Auth implements Zend_Auth_Adapter_Interface{ private $_useraccount; private $_password; private $_db; /** * 构造函数 设置用户名和密码 数据连接对象 * * @return void */ public function __construct($useraccount,$password,$db){ $this->_useraccount = $useraccount; $this->_password = $password; $this->_db = $db; } /** * 进行认证 * @throws Zend_Auth_Adapter_Exception * @return Zend_Auth_Result * */ public function authenticate() { //默认情况下是认证失败 $authResult = array( 'code' => Zend_Auth_Result::FAILURE,//详参:Zend_Auth_Result 'identity' => '', 'info' => array() ); //获得登录用户信息 $result = $this->_getAccountData(); if(isset($result)&&!empty($result)) {//认证成功,则将用户信息存储到session中 $authResult = array( 'code' => Zend_Auth_Result::SUCCESS, 'identity' => $result['name'], 'info' => array('status'=>$result['status']) ); //角色存储 个人缓存空间 $namespace = Zend_Auth::getInstance()//单例模式 -> getStorage() -> getNamespace(); $_SESSION[$namespace]['role'] = $result['group_id'];//所属用户组 $_SESSION[$namespace]['userInfo'] = $result; $_SESSION[$namespace]['userInfo']['lastLoginTime'] = $result['login_time']; $_SESSION[$namespace]['userInfo']['lastLoginIp'] = $result['login_ip']; // $_SESSION[$namespace]['userInfo']['password'] = $result['password'];//密码是很重要的,不要写到session中 } return new Zend_Auth_Result($authResult['code'], $authResult['identity'], $authResult['info']); } /** * 用户密码加密 * @param $pwd 原始密码 * @return string 加密后的密码字符串 * */ static public function encryptionType($pwd=null) { $pwd = md5($pwd); return $pwd; } /** * 获得用户数据结构 * * @todo 整理密码的公共类 */ private function _getAccountData(){ $resArr = array(); $sysUserObj = Base_Dao_Factory::getObject('Admin_Models_User'); //先登录普通会员帐号 $data = array( 'login_name' => $this->_useraccount, 'login_pwd' => $this->encryptionType($this->_password) ); $result = $sysUserObj->login($data); //判断是否有数据,是则赋值 if ($result) { if (!empty($result[0])) { $resArr = $result[0]; } } return $resArr; } }解释:在authenticate方法的实现代码中,return一个Zend_Auth_Result对象实例,而查看Zend_Auth_Result的源代码,知道实例化的时候需要传入三个参数:
@param int $code 身份认证的结果(如:Zend_Auth_Result::SUCCESS)
@param mixed $identity 用于身份认证的标示符(如:登录名(张三))
@param array $messages 认证失败的原因数组
而一旦认证成功,则将信息存储到session变量中。
1 2 3 4
相关文章推荐
- 使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
- 使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
- Zend framework 之zend_acl,zend_auth实现用户权限控制
- 根据角色进行权限控制
- php : RBAC 基于角色的用户权限控制-表参考
- Zend framework2 - Zend\Authentication和Zend\Acl 用户身份验证与权限控制-Demo参考OK
- LINUX 单个用户访问权限控制(ACL)
- 牛腩购物12 :整合用户登录页 用到 asp.net 内置票据认证控件的使用(用户登录 用户权限) 用户控件ascx 设置/获取RadioButtonList 和RadioButton
- ZooKeeper通过Auth和ACL完成节点的权限控制。
- Oracle用户,权限,角色以及登录管理 scoot 授权
- 您不具备查看该目录或页面的权限,因为访问控制列表(ACL)对Web 服务器上的该资源进行了配置或者访问网站时出现登录对话框。
- 使用Spring Security进行用户权限控制
- Token认证登录以及权限控制
- Num54 boss08(添角色用户 & 权限用户分页 & 授权方法 &缓存权限数据&登录用户展示)
- 关于的PostgreSQL的登录角色,组角色,用户等概念及权限分配上的区别
- 使用Lync 2013 基于角色的权限控制:RBAC 给用户分配指定的操作权限
- oracel存储过程 根据excel 进行用户数据插入、角色绑定 或 用户数据更新、角色绑定或更新,并写入日志
- springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】
- RabbitMQ用户角色及权限控制