Symfony强制登录并记住我


Symfony force login and remember me

以下代码将强制用户自动登录,并且运行良好。我想添加记住我的功能。因此,当我们强制登录用户,然后添加时,请记住我,这样下次他就会自动登录到网站。

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

使用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)
);

编辑:将其添加到您的安全中。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的末尾。