2013-03-07 1 views
0

Мне нужно сообщить Zend, что пользователь аутентифицирован в очень специфическом случае, но я не хочу создавать для этой цели Auth Adapter.PHP Zend Authentication - Как я могу сказать Zend, что пользователь аутентифицирован

Я хочу что-то вроде этого:

if ($user == 'sam') { 

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

} 

Других слов, я не хочу, чтобы делегировать задачу определения того, пользователь действует на некоторый Auth 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

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 
    } 
Смежные вопросы