存在一種情況:我將一些結構化數據(例如數組或對象,或者甚至字符串)存儲爲Zend_Auth標識。從版本到版本,身份結構可以改變,因此一個版本的身份可以(或不可以)與另一個版本的應用程序代碼兼容。Zend_Auth身份版本
我想有一個能力來驗證存儲的身份數據是否符合當前版本的要求。
當我從手動看到的,是否存在身份驗證等進行:
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
// Identity exists; get it
$identity = $auth->getIdentity();
}
但是沒有掛接到hasIdentity()
方法的能力或其他地方進行驗證。
我看到要做到這一點的唯一方法是實現我自己的Zend_Auth_Storage_Interface
類,它將使用一些其他存儲作爲實現並執行存儲數據的驗證。
有沒有更合適的解決方案?
你完全正確。我使用Zend_Auth對用戶進行身份驗證,並使用Zend_Acl對其進行授權(在preDispatch上過濾導航和驗證權限)。 但我怎麼能通過Zend_Acl確定身份是錯誤的?它是否意味着該用戶沒有任何權限或類似的東西? – 2011-03-12 13:49:56
更具體一點:該網站只包含會員區。這意味着當用戶未登錄時,必須顯示登錄表單而不是任何頁面。否則,當用戶登錄時,他應該看到他被允許訪問的那部分網站。所以可能在錯誤身份的情況下,我必須確定用戶的角色爲「匿名」,而不是將其作爲匿名進行處理。 – 2011-03-12 14:01:55
你是對的,因爲角色的工作原理,你可以從較不寬容的角色繼承他們到最強大的角色。我通常使用guest作爲我的起始角色,具有訪問登錄頁面和登錄的唯一權限,然後提升權限。 – 2011-03-12 14:12:08