php - Symfony 强制登录并记住我

标签 php symfony symfony-security

以下代码将强制用户自动登录并且工作正常。我想添加记住我的功能。因此,当我们强制登录用户时,还添加记住我,这样下次他就会自动登录该网站。

// 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,无需在 session 中手动设置,只需触发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)
);

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

关于php - Symfony 强制登录并记住我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38500609/

相关文章:

php - 将数组中值的位置存储到数据库表列

php - ob_get_contents 在 Php 中如何工作?

php - Symfony2 在内核请求事件中抛出 404

symfony - AuthenticatorInterface::supports() 方法的目的是什么?

symfony - 在 Symfony 中自动阻止/禁止暴力扫描器

php - Tumblr XML 未加载

php - 如何从 WooCommerce 订单确认电子邮件中删除付款方式?

php - 在 symfony/goutte 中加入 URL

routing - 交响乐 2 : how to force path() method to add _format?

php - Symfony 安全注销未清除 RememberMe token