基于这个问题:Automatic post-registration user authentication
$token = new UsernamePasswordToken($userEntity, null, 'main', array('ROLE_USER'));
$this->get('security.context')->setToken($token);
这在Symfony 2上工作得很好,但是在Symfony 2.1的实际版本中,这种接缝不再起作用,我尝试相同的代码但没有成功(并且没有错误)。我们的想法是在不使用登录表单的情况下通过ajax对我的用户进行身份验证。这是因为我使用这个架构:
if(user_on_data_base) {
if(user_fb_linked_with_us) { // authenticate him and redirect to /home }
}
这是通过ajax执行的。
修改: 最奇怪的是,如果我从我的用户控制器执行此代码,它的工作原理!但是从我的ajax控制器执行它不要。
答案 0 :(得分:0)
看看HWIOAuthBundle does this如何,看起来你需要抛出security.interactive_login
事件。
以下是您可以这样做的方法:
$this->get('event_dispatcher')->dispatch(
SecurityEvents::INTERACTIVE_LOGIN,
new InteractiveLoginEvent($this->container->get('request'), $token)
);