用戶角色我有哪裏的用戶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