我已经以编程方式实现了登录功能。
此代码如下:
$token = new UsernamePasswordToken($user, $user->getPassword(), 'main', $user->getRoles());
$this->get('security.context')->setToken($token);
$event = new InteractiveLoginEvent($this->getRequest(),$token);
$this->get('event_dispatcher')->dispatch('security.interactive_login', $event);
在此之后,我该如何实现记住我?
(我知道如何使用表单,但我想实现以编程方式记住我。 )
请帮忙......
答案 0 :(得分:9)
尝试使用RememberMeToken
$key = $this->getParameter('secret'); // your security key from parameters.yml
$token = new RememberMeToken($user, 'main', $key);
$this->get('security.context')->setToken($token);
答案 1 :(得分:1)
我遇到了同样的问题。您应该使用RememberMeToken
代替UsernamePasswordToken
。
类参数与UsernamePasswordToken非常相似,所以我不会详细介绍。
答案 2 :(得分:0)
您可以使用唯一ID创建Cookie。然后将此cookie存储在数据库中,并在新访问者访问该站点时检查此数据库。如果您将用户存储在数据库中,最好添加一个额外的列来存储此信息。顺便看看FOSUserBundle。
答案 3 :(得分:0)
我使用了与forgettenbas建议相同的方法,但出现了错误。我不得不使用$ this->容器(Symfony2):
$key = $this->container->getParameter('secret');
$token = new RememberMeToken($user, 'user_area', $key);
$this->get('security.context')->setToken($token);
$ user是我的User类的一个实例,'user_area'是我的防火墙的名称。