Symfony记得我的内部

时间:2016-09-27 12:20:28

标签: security symfony fosuserbundle remember-me

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。如果需要一些其他信息,请告诉我。

0 个答案:

没有答案