我需要告诉Zend用户在特定场合进行身份验证,但我不想为此目的构建Auth适配器。
我想要这样的事情:
if ($user == 'sam') {
// this user is valid, tell Zend to authenticate
Zend_Auth::authenticate(true);
}
换句话说,我不想委派确定某个用户是否对某个Auth Adapter有效的任务。我想告诉Zend“嘿,这家伙和我在一起,所以设置身份验证cookie和让他使用我的网站“。
有办法做到这一点吗?
答案 0 :(得分: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;
}
答案 1 :(得分: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
}