在Symfony中注册用户后登录并设置Remember_me Cookie

时间:2018-08-14 09:56:21

标签: symfony symfony4 symfony-security

我有一个控制器操作,该操作处理用户的数据,注册用户,将其登录并重定向到另一个控制器的操作。但是我无法设置“ remember_me” cookie。

成功注册后,控制器将获取 $ user 对象,然后将其传递给 GuardAuthenticatorHandler authenticateUserAndHandleSuccess()方法这是Symfony的安全软件包的一部分。

use Symfony\Component\HttpFoundation\Request;
use App\Security\LoginFormAuthenticator;
use Symfony\Component\Security\Guard\GuardAuthenticatorHandler;


public function register(Request $request, LoginFormAuthenticator $authenticator, GuardAuthenticatorHandler $guardHandler) {

    // do something... and get $user object

    return $guardHandler->authenticateUserAndHandleSuccess(
        $user,
        $request,
        $authenticator,
        'main'
    );

}

这是自动登录用户。但是,它不会设置当前正在运行并在登录表单中使用的Remember_me Cookie。

来自security.yaml

    remember_me:
        secret: '%kernel.secret%'
        lifetime: 2592000 # 1 month in seconds
        path: /
        remember_me_parameter: login_form[_remember_me]

如何更改控制器以设置“ remember_me” cookie?

1 个答案:

答案 0 :(得分:2)

我不知道在注册期间设置remember_me是否是一个好主意,但是如果您真的需要它,只需检查{{1}期间执行的TokenBasedRememberMeServices的{​​{3}}方法}}在发送正确的login参数时进行处理-只是设置正确的Cookie。