我使用doctrine.I相信每一個引導正確地做,我可以登錄使用Zend_Auth的一個項目如何在使用Doctrine適配器時從Zend_Auth/Zend_ACL獲取角色? 。讓所有一起工作
我的適配器是這樣的:
class Abra_Auth_Adapter_Doctrine implements Zend_Auth_Adapter_Interface {
protected $_resultArray;
private $username;
private $password;
public function __construct($username, $password) {
$this->username = $username;
$this->password = $password;
}
//based on feedbacks as response authenticate has changed to this
public function authenticate() {
$q = Doctrine_Query::create()
->from("Abra_Model_User u")
->leftJoin("u.Role r")
->where("u.username=? AND u.password=?", array($this->username,$this->password));
$result = $q->execute();
if (count($result) == 1) {
return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $result->get("Mylibrary_Model_User"), array());//autoloaderNamespaces[] = "Mylibrary_" in application.ini
} else {
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, null, array("Authentication Unsuccessful"));
}
}
我Abra_Controller_Pluging_Acl長相這樣
class Abra_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request) {
parent::preDispatch($request);
$controller = $request->getControllerName();
$action = $request->getActionName();
$module = $request->getModuleName();
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity()){
$identity = $auth->getIdentity();
$roles = $identity["Role"];
$role = $roles["name"];
$role = (empty ($role) || is_null($role))? "regular" : $role ;
} else {
$role = "guest";
}
}
現在具有Doctrine_Event致命錯誤:spl_autoload()[function.spl-自動加載]:類Doctrine_Event不能加載。我已經看到這個post here,我想知道如何可以影響我使用Zend_Session,並且這是事實,我已經啓用了apc.dll在我的php.thanks大量閱讀此
感謝您使用寫這一切的時間。我編輯我的帖子,使問題2更清晰。 –
你好我已經更新了腳本的結果和實現你的想法時發現的問題。我希望其他人可以從現在開始分享自己的經驗。無論如何感謝 –
角色是一個數組? User模型是用hasMany('Role')定義的嗎?作爲一個單獨的想法,爲什麼你想要身份驗證適配器將所有內容都轉換爲數組。學說創建一個對象圖;爲什麼不保留它? –