2016-07-21 2 views
0

다음 코드는 자동으로 로그인 사용자를 강제 할 것이며 잘 작동합니다. 나 기억 기능을 추가하고 싶다. 그래서 우리는 로그인 사용자를 강제로 누른 다음 을 기억하면을 기억하므로 다음 번에 자동으로 사이트에 로그인합니다.심포니 강제로 로그인하고 기억하십시오

// 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) 
); 

편집 :

 yourProviderKey: # oauth i guess 
      remember_me: true 
     remember_me: 
      secret: '%secret%' 
      lifetime: 604800 # 1 week in seconds 
      path: /
      #always_remember_me: true # optional 
: 은 security.yml이 추가

이것이 작동하지 않으면 check_path 끝에 ?_remember_me=1을 추가하십시오.

+0

와우, 내가 찾은 다른 솔루션과 비교해 보면 간단합니다. 이것이 올바르게 작동하는지 어떻게 확인할 수 있습니까? – Basit

+0

위의 코드는 쿠키 'REMEMBERME'을 설정하지 않지만 양식을 사용하여 로그인하고 나를 기억한다면 쿠키를 잘 설정합니다. 그래서 위의 코드는 작동하지 않습니다! – Basit

+0

security.yml을 표시 할 수 있습니까? –