用户在 Symfony 中注册后登录并设置 remember_me cookie
Posted
技术标签:
【中文标题】用户在 Symfony 中注册后登录并设置 remember_me cookie【英文标题】:Login and set remember_me cookie after user registration in Symfony 【发布时间】:2019-01-21 03:38:05 【问题描述】:我有一个控制器操作,它处理用户的数据、注册用户、登录并将他们重定向到另一个控制器的操作。但是我无法获得“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】:我不知道在注册期间设置remember_me
是否是个好主意,但如果你真的需要它,只需检查TokenBasedRememberMeServices
的onLoginSuccess 方法,该方法在login
过程中正确执行remember me
正在发送参数 - 这只是设置正确的 cookie。
【讨论】:
以上是关于用户在 Symfony 中注册后登录并设置 remember_me cookie的主要内容,如果未能解决你的问题,请参考以下文章
使用 FOSUserBundle 自动登录 Symfony2 [重复]
Symfony3 onSecurityInteractiveLogin注销并设置flash