2013-03-07 76 views
0

我需要告訴Zend用戶在特定場合進行了身份驗證,但我不想爲此構建身份驗證適配器。PHP Zend身份驗證 - 我如何告訴Zend用戶已通過身份驗證

我想是這樣的:

if ($user == 'sam') { 

    // this user is valid, tell Zend to authenticate 
    Zend_Auth::authenticate(true); 

} 

換句話說,我不想委託確定用戶是否是有效的一些驗證Adapter.I想告訴Zend的「任務嘿,這個人和我在一起,所以設置認證cookie並讓他使用我的網站「。

有沒有辦法做到這一點?

回答

1

你可以做到這一點通過寫在Zend_Auth存儲:

$userData = (object)array('username' => 'Johny23'); 
Zend_Auth::getInstance()->getStorage()->write($userData); 

當你這樣做,Zend的全自動創造出處理會話新爲Zend_Auth_Storage_Session對象。

然後,你可以檢查:

$auth = Zend_Auth::getInstance(); 
if($auth->hasIdentity()){ 
    echo 'welcome back, ' . $auth->getIdentity()->username; 
} 
+0

你達人!非常感謝 – myworkaccount 2013-03-07 19:10:41

0

http://framework.zend.com/manual/1.12/en/zend.auth.adapter.dbtable.html

檢查的最後一個代碼下的高級用法實例,代碼如下

$registry  = Zend_Registry::getInstance(); 
    $DB    = $registry['DB']; 
    $authAdapter = new Zend_Auth_Adapter_DbTable($DB,'usertable','username','password'); 

    $authAdapter->setIdentity($request->getParam('username')); 
    $authAdapter->setCredential($request->getParam('password')); 

    $select   = $authAdapter->getDbSelect(); 
    $select->where('`active` = 1'); 
    $result   = $authAdapter->authenticate(); 

    if($result->isValid()){ 
      //set user proper to zend instance 
      $this->_redirect('/index'); 
    } 
    else 
    { 
     //logout or redirect to same page 
    }