7

我以编程方式实现了登录功能。

此代码如下:

$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);

在此之后,我如何实现记住我?

(我知道如何使用表单,但我想以编程方式实现记住我。)</p>

请帮忙...

4

4 回答 4

9

尝试使用RememberMeToken

$key = $this->getParameter('secret'); // your security key from parameters.yml

$token = new RememberMeToken($user, 'main', $key); 
$this->get('security.context')->setToken($token);
于 2013-08-15T12:23:18.317 回答
1

我有同样的问题。你应该使用RememberMeToken而不是UsernamePasswordToken.

类参数与 UsernamePasswordToken 非常相似,不再赘述。

于 2013-08-14T22:26:43.040 回答
0

您可以创建具有唯一 ID 的 cookie。然后将此 cookie 存储在数据库中,并在新访问者访问该站点时检查此数据库。如果您将用户存储在数据库中,最好创建一个额外的列来存储此信息。顺便看看 FOSUserBundle。

于 2013-08-03T17:42:14.037 回答
0

我使用了与 forgetbas 建议的方法相同的方法,但出现了错误。我不得不使用 $this->container (Symfony2):

$key = $this->container->getParameter('secret');

$token = new RememberMeToken($user, 'user_area', $key); 
$this->get('security.context')->setToken($token);

$user 是我的用户类的一个实例,'user_area' 是我的防火墙的名称。

于 2014-02-22T17:30:35.673 回答