2011-09-09 96 views
0

我已經創建了登錄表單,我可以通過一個表進行身份驗證,我是否甚至需要使用Zend_Auth?我在哪裏可以找到實現Zend_Auth的最佳方式?

在哪裏可以找到實現Zend_Auth的最好方法是什麼?

由於

+1

你的意思是實現了Zend_Auth_Adapter_Interface吧?\ – Corbin

+0

如果你的經驗是像我這樣的事情,你應該找到這樣做的至少123種完全不同的最佳途徑。 – PurplePilot

+0

我的回答很好;) http://stackoverflow.com/questions/2046608/practical-zend-acl-zend-auth-implementation-and-best-practices – SMka

回答

1

我使用下面的方法來驗證:

function authenticate ($data) 
{ 
    $db = \Zend_Db_Table::getDefaultAdapter(); 
    $authAdapter = new \Zend_Auth_Adapter_DbTable($db); 

    $authAdapter->setTableName('usuarios2'); 
    $authAdapter->setIdentityColumn('user'); 
    $authAdapter->setCredentialColumn('password'); 
    $authAdapter->setCredentialTreatment('MD5(?) and active = 1'); 


    $authAdapter->setIdentity($data['user']); 
    $authAdapter->setCredential($data['password']); 

    $auth = \Zend_Auth::getInstance(); 
    $result = $auth->authenticate($authAdapter); 

    if ($result->isValid()) { 

     if ($data['public'] == "1") { 
      \Zend_Session::rememberMe(1209600); 
     } else { 
      \Zend_Session::forgetMe(); 
     } 

     return TRUE; 

    } else { 

     return FALSE; 

    } 
} 

$數據是從登錄表單的發佈請求,從控制器我稱這樣的功能: 的authenticate($這 - > _請求 - >的getPost())

在任何行動,如果你想驗證用戶的身份,你只是:

$auth = Zend_Auth::getInstance(); 
if ($auth->hasIdentity()) { 
    $identity = $auth->getIdentity(); //this is the user in my case 
} 

在登錄表單我有一個複選框(名爲公衆)如果檢查認證信息將被保存在cookie otherwhise它會在用戶關閉瀏覽器會話(Zend_Session :: forgetMe())

被刪除

這是對auth過程的快速回顧。

相關問題