可能重复:
Automatic post-registration user authenticationSymfony2:如何手动登录用户?
我要登录注册后用户。我可以通过发送带有用户名和密码的POST请求到/ login_check来执行此操作。至少我认为它可能会成功。但更好的解决方案是通过控制器中的php代码实现它,但我不知道如何使用Symfony2来完成此操作。
可能重复:
Automatic post-registration user authenticationSymfony2:如何手动登录用户?
我要登录注册后用户。我可以通过发送带有用户名和密码的POST请求到/ login_check来执行此操作。至少我认为它可能会成功。但更好的解决方案是通过控制器中的php代码实现它,但我不知道如何使用Symfony2来完成此操作。
如果我没有记错,诀窍是将令牌直接设置为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中设置的那样 –
@Problematic:它的工作原理!谢谢。 – Harry