2013-03-07 49 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 
    }