TL; DR - 我的问题是我正在尝试手动登录用户(通过自定义操作的Ajax请求)并记住我的cookie。在Symfony 3中有人可以帮我这么做吗?
您好,我正在开发自定义Symfony注册/登录操作。 首先,我通过使用以下行(我使用Symfony 3.1)成功注册后手动登录用户:
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
此外,我想添加记住我的功能,经过简短的研究后我发现可以通过使用RememberMeToken
类来实现。但是当我使用它时,Symfony将我识别为IS_AUTHENTICATED_REMEMBERED
而不是IS_AUTHENTICATED_FULLY
,所以根据这一点,我仍然看到登录按钮和访客用户菜单(Twig模板中的is_granted
没有'按预期工作)。有人可以帮我解决这个问题吗?
完整的代码段:
if ($isKeepSigned) {
$token = new RememberMeToken($user, 'main', $this->getParameter('secret'));
} else {
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
}
$this->get('security.token_storage')->setToken($token);
$this->get('session')->set('_security_main', serialize($token));
最好的问候。
此外我尝试使用内部FOS用户解决方案,但我的应用程序没有像security.authentication.rememberme.services.persistent.'.$firewallName
这样的服务
。我不明白它在FOS包中是如何工作的。
P.S。如果需要一些其他信息,请告诉我。