自动用户验证

时间:2013-01-17 13:54:37

标签: symfony symfony-2.1

基于这个问题: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控制器执行它不要。

1 个答案:

答案 0 :(得分:0)

看看HWIOAuthBundle does this如何,看起来你需要抛出security.interactive_login事件。

以下是您可以这样做的方法:

$this->get('event_dispatcher')->dispatch(
    SecurityEvents::INTERACTIVE_LOGIN,
    new InteractiveLoginEvent($this->container->get('request'), $token)
);