2013-11-26 4 views
1

Я пытаюсь сделать классическую аутентификацию Zend 2 без использования проверки DbTable.Zend Framework 2 Аутентификация без проверки DbTable

Я объясню лучше

  • Я пользовательский метод Authenticate(), который способен идентифицировать пользователя (независимо от Zend Auth).
  • Я сделал пользовательский класс, который расширяет Zend \ Authentication \ Storage \ Session
  • Теперь я хочу, чтобы сохранить данные в сессии с чем-то вроде этого:

    $authService->getStorage()->write($this); 
    

Проблема с использованием этот код, когда на следующей странице я звоню:

if($authService->hasIdentity()) 

это ответ ложный.

Итак, как я могу сделать, чтобы сохранить идентификацию с помощью пользовательской аутентификации? я думаю, что я могу реализовать Zend \ Authentication \ адаптер \ AdapterInterface, но я не знал, как exacly ...

любая помощь приветствуется, спасибо большое :)

ответ

3

Вы можете создать адаптер, как так:

use Zend\Authentication\Adapter\AdapterInterface; 
use Zend\Authentication\Result as AuthResult; 

class MyAdapter implements AdapterInterface 
{ 

    /** 
    * @return \Zend\Authentication\Result 
    */ 
    public function authenticate() 
    { 
     /* Return if can't find user */ 
     return new AuthResult(AuthResult::FAILURE_IDENTITY_NOT_FOUND, null); 
     /* Return if success, second parameter is the identity, e.g user. */ 
     return new AuthResult(AuthResult::SUCCESS, $identity); 
     /* Return if user found, but credentials were invalid */ 
     return new AuthResult(AuthResult::FAILURE_CREDENTIAL_INVALID, null); 
    } 
} 

Вы можете использовать этот адаптер с ZF2 AuthenticationService так:

$auth_service = new \Zend\Authentication\AuthenticationService(); 
/* Where $myAdapter is a instance of the MyAdapter class above */ 
$auth_service->setAdapter($myAdapter); 
+0

Спасибо большое :) – user2540463

Смежные вопросы