Symfony2:如何手动登录用户? [复制]

Posted

技术标签:

【中文标题】Symfony2:如何手动登录用户? [复制]【英文标题】:Symfony2: How to log user manually? [duplicate] 【发布时间】:2011-11-09 10:39:52 【问题描述】:

可能重复:Automatic post-registration user authentication

我想在注册后登录用户。我可以通过 javascript 向 /login_check 发送带有用户名和密码的 POST 请求来做到这一点。至少我认为它可能会成功。但更好的解决方案是通过控制器中的 php 代码实现它,但我不知道如何使用 Symfony2 来做到这一点。

【问题讨论】:

@Problematic:有效!谢谢。 【参考方案1】:

如果我没记错的话,诀窍是将令牌直接设置到security.context 服务中。由于您使用的是用户名/密码对,因此您可以实例化一个 UsernamePasswordToken 类并将其设置在安全上下文中。

$securityContext = $this->get('security.context');
$token = new UsernamePasswordToken($username, $password, $providerKey, $roles);

$securityContext->setToken($token);

对于$user$password$roles 参数,这很明显。对于$providerKey,我必须承认我不知道到底该放什么。因此,也许从 AuthenticationProvider 获取令牌可能会更容易,或者如果您已经可以访问 TokenInterface 对象。

我的anwser的重点是通过setToken方法将令牌直接设置到SecurityContext对象中。但我不确定如何检索或创建令牌:)

希望对您有所帮助。

问候, 马特

【讨论】:

$providerKey 是您的防火墙的名称,在 app/config/security.yml 中设置

以上是关于Symfony2:如何手动登录用户? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2:如何实现自定义用户登录和注册——摆脱 FOSUSerBundle

Symfony 2:如何检查用户是不是未在模板中登录?

Symfony2 获取登录用户

如何强制用户注销 symfony2

Symfony2 自定义身份验证:用户登录但未通过身份验证

如何使用 symfony2“手动”处理文件上传?