用户角色我有哪里的用户ID,用户名和密码存储用户表,其中包含用户角色的角色表。要链接这两个表,我有一个包含userID和roleID的表(user_role)。我如何使用Zend Auth来验证用户并使用Zend Acl来控制用户访问。 This is the database designZend的认证,其中存储在单独的数据库表
0
A
回答
0
您可以创建一个Zend_Auth适配器,它适用于您的应用程序所具有的任何结构。
下面是一个Auth适配器的示例,它使用我的实体模型和映射器为验证提供凭据和用户数据。
<?php
/**
* Description of Auth_Adapter
*
*/
class Auth_Adapter implements Zend_Auth_Adapter_Interface
{
/**
* The username
*
* @var string
*/
protected $identity = null;
/**
* The password
*
* @var string
*/
protected $credential = null;
/**
* Users database object
*
* @var Model_Mapper_Abstract
*/
protected $usersMapper = null;
/**
* @param string $username
* @param string $password
* @param Model_Mapper_Abstract $userMapper
*/
public function __construct($username, $password, Model_Mapper_Abstract $userMapper = null)
{
if (!is_null($userMapper)) {
$this->setMapper($userMapper);
} else {
$this->usersMapper = new Application_Model_Mapper_User();
}
$this->setIdentity($username);
$this->setCredential($password);
}
/**
* @return \Zend_Auth_Result
*/
public function authenticate()
{
// Fetch user information according to username
$user = $this->getUserObject();
if (is_null($user)) {
return new Zend_Auth_Result(
Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND,
$this->getIdentity(),
array('Invalid username')
);
}
// check whether or not the hash matches using my own password class
$check = Password::comparePassword($this->getCredential(), $user->password);
if (!$check) {
return new Zend_Auth_Result(
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,
$this->getIdentity(),
array('Incorrect password')
);
}
// Success!
return new Zend_Auth_Result(
Zend_Auth_Result::SUCCESS,
$this->getIdentity(),
array()
);
}
/**
* @param type $userName
* @return \Auth_Adapter
*/
public function setIdentity($userName)
{
$this->identity = $userName;
return $this;
}
/**
* @param type $password
* @return \Auth_Adapter
*/
public function setCredential($password)
{
$this->credential = $password;
return $this;
}
/**
* @param type $mapper
* @return \Auth_Adapter
*/
public function setMapper($mapper)
{
$this->usersMapper = $mapper;
return $this;
}
/**
* @return object
*/
private function getUserObject()
{
return $this->getMapper()->findOneByColumn('name', $this->getIdentity());
}
/**
* @return object
*/
public function getUser()
{
$object = $this->getUserObject();
$array = array(
'id' => $object->id,
'name' => $object->name,
'role' => $object->role
);
return (object) $array;
}
/**
* @return string
*/
public function getIdentity()
{
return $this->identity;
}
/**
* @return string
*/
public function getCredential()
{
return $this->credential;
}
/**
* @return object Model_Mapper_Abstract
*/
public function getMapper()
{
return $this->usersMapper;
}
}
您还可以扩展任何当前适配器以提供所需的功能。
祝你好运!
+0
谢谢你的帮助@ RockyFord。 – arjang27 2013-03-11 23:46:03
相关问题
- 1. Rails和数据库 - 将旧数据存储在单独的表中?
- 2. Git - 从单独的存储库跟踪文件夹,并在其中设置单独的存储库
- 3. 如何将Facebook认证的用户存储在数据库中?
- 4. nodejs在单独的数据库中存储会话
- 5. 如何验证表单字段但不将其存储在数据库中
- 6. mySQL单独存储在表中的数据
- 7. 在一个单独的数据库表中存储临时结果
- 8. blob数据库设计 - 保存在单独的表中?
- 9. 存储单独的会话变量数据表中的JSF
- 10. 将库存数据与产品数据保存在单独的表中
- 11. 业务逻辑和数据库存储的单独数据表示
- 12. 在存储到SQLite数据库之前进行表单验证#
- 13. 认证数据存储在android
- 14. 如何在Zend框架中的数据库表中存储数组值?
- 15. 单独数据库中的用户表
- 16. 拆分Python列表并将其存储在单独的列表
- 17. 如何提取单独存储在数据库中的逗号分隔存储的数据?
- 18. 分类json数据并将其存储在单独的数组中
- 19. 存储在表(数据库)
- 20. 独立于Zend框架的其余部分使用zend_auth的简单认证
- 21. 在存储库中使用它的函数(Doctrine + Zend表达式)
- 22. jQuery模型表单不存储数据库中的数据
- 23. 在rails中将会话存储在单独的数据库中3.2
- 24. 数据库规范化:使用单独的表格存储单个字段
- 25. 在数据库中存储空数据的验证码
- 26. 将表单数据存储在数据库中
- 27. 表单数据没有存储在数据库中
- 28. 在mysql数据库中存储表单数据 - XSS漏洞
- 29. clojure中的简单数据库存储
- 30. SQL Server归档选项 - 单独的表与单独的数据库vs其他
@TimFountain我在YouTube上关注zf_turoial。问题是Zend_Auth_Adapter_DbTable的时刻需要一个db表。此表需要有一个存储用户角色的列,但在我的数据库中,用户角色位于单独的表中。 – arjang27 2013-03-08 20:03:00