2013-12-10 2 views
0

У меня есть ZF2 с установленным модулем ZfcUser.ZF2 ZfcUser force login

Регистрация и формы входа работают нормально. Я создал специальный модуль для подключения к Linkedin и получения информации о пользователе, а затем зарегистрировал пользовательские данные в базе данных.

Часть регистра выполнена, но проблема, с которой я сталкиваюсь, заключается в том, что мне нужно войти в систему с данными из базы данных (у меня есть вся информация о пользователе, поэтому я знаю, какой пользователь должен войти в систему) , но я не могу найти способ сделать логин ZfcUser определенным пользователем, используя PHP, а не форму входа.

Я плохо разбираюсь в адаптерах и \ Zend \ Authentication. Буду признателен за любую помощь или указания.

Я попытался посмотреть процедуру входа в контроллер ZfcUser, но это меня сбивает с толку, а затем помогает мне.

Я также попытался найти ответ в google, но я ничего не нашел по этой теме.

Если возможно, я хотел бы, чтобы «принудительная процедура входа» была вне модуля ZfcUser.

Через несколько часов, глядя на контроллер ZfcUser мне удалось построить метод, чтобы сделать то, что я хочу

/** 
* Change the currently logged user 
* @param integer $user_id 
*/ 
public function setLoggedUser($user_id) { 
$storage = new \Zend\Session\Container('Zend_Auth'); 
$storage->storage = $user_id; 
} 
+0

не уверен, что я следую за вами здесь «, но я не могу найти способ сделать ZfcUser логин конкретный пользователь, использующий PHP, а не регистрационную форму ». – Erik

ответ

3

Установка идентификатора пользователя непосредственно на хранение имеет некоторые недостатки. Это (очевидно) не будет работать, если вы используете другой механизм хранения. И события, зарегистрированные на ZFCUser's AuthService, не будут выполнены.

Я решил бы эту проблему с помощью адаптера аутентификации. Этот адаптер может быть вызван из контроллера следующим образом:

Реализация выглядит следующим образом:

class ForceLogin implements Zend\Authentication\Adapter\AdapterInterface 
{ 
    /** 
    * @var UserInterface 
    */ 
    protected $user; 

    /** 
    * @param $user 
    */ 
    function __construct($user) 
    { 
     $this->user = $user; 
    } 

    public function authenticate() 
    { 
     return new Zend\Authentication\Result(
      Result::SUCCESS, 
      $this->getUser()->getId() 
     ); 
    } 
} 
Смежные вопросы