2016-07-21 5 views
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 

これが動作しない場合は、check_pathの末尾に?_remember_me=1を追加してください。

+0

うわー、これは私が見つけた他のソリューションと比べて単純です。これが正しく動作しているかどうかをどのように確認できますか? – Basit

+0

上記のコードはCookie 'REMEMBERME'を設定していませんが、私がフォームを使ってログインして私を覚えていれば、それはクッキーをうまく設定します。上記のコードはうまくいきません! – Basit

+0

あなたはあなたのsecurity.ymlを表示できますか? –

関連する問題