2016-07-21 2 views
0

Следующий код автоматически заставит пользователя автоматически и работает отлично. Я хочу добавить, помню мне функциональность. Поэтому, когда мы вынуждаем пользователя входа в систему, а затем добавляем 0 0 меняем, так что в следующий раз он автоматически войдет на сайт.Symfony force логин и запомни меня

// Auto Authenticate User 
     $firewall = 'user_firewall'; 
     $token = new UsernamePasswordToken($user, null, $firewall, $user->getRoles()); 
     $this->get('security.token_storage')->setToken($token); 

     $session = $this->get('session'); 
     $session->set('_security_'.$firewall, serialize($token)); 
     $session->save(); 
+0

http://symfony.com/doc/current/cookbook/security/remember_me.html –

+0

необходимо запомнить меня без формы. – Basit

ответ

1

Использование RemeberMeToken и нет необходимости устанавливать его вручную в сессии, просто запустите interactive_login событие:

// Auto Authenticate User 
$firewall = 'user_firewall'; 
$key = $this->getParameter('secret'); //from parameters.yml 
$token = new RememberMeToken($user, $firewall, $key); 
$this->get('security.token_storage')->setToken($token); 

$this->get('event_dispatcher')->dispatch(
    SecurityEvents::INTERACTIVE_LOGIN, 
    new InteractiveLoginEvent($request, $token) 
); 

EDIT: добавить к вашей security.yml:

 yourProviderKey: # oauth i guess 
      remember_me: true 
     remember_me: 
      secret: '%secret%' 
      lifetime: 604800 # 1 week in seconds 
      path: /
      #always_remember_me: true # optional 

Если это не сработает, попробуйте добавить ?_remember_me=1 в конец вашего check_path.

+0

Ничего себе, это выглядит просто по сравнению с другими решениями, которые я нашел. Как я могу проверить, работает ли это правильно? – Basit

+0

Вышеприведенный код не устанавливает cookie 'REMEMBERME', но если я вхожу в систему с помощью формы и задаю, помните меня, тогда он установит cookie в порядке. поэтому над кодом не работает! – Basit

+0

Можете ли вы показать свой security.yml? –

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

  • Нет связанных вопросов^_^