我有一个控制器操作,该操作处理用户的数据,注册用户,将其登录并重定向到另一个控制器的操作。但是我无法设置“ 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?
答案 0 :(得分:2)
我不知道在注册期间设置remember_me
是否是一个好主意,但是如果您真的需要它,只需检查{{1}期间执行的TokenBasedRememberMeServices
的{{3}}方法}}在发送正确的login
参数时进行处理-只是设置正确的Cookie。