Symfony 手动验证用户时未设置app.user

Symfony 手动验证用户时未设置app.user,symfony,Symfony,下面是一个如何在注册后手动验证用户身份的示例,如下所示: $token = new UsernamePasswordToken($user->getUsername(), null, 'main', array('ROLE_USER')); $this->get('security.context')->setToken($token); Bu因为我使用doctrine实体作为用户提供者,它没有被正确设置,我不知道如何正确设置。如果我将$user作为第一个参数传递,网页将无限

下面是一个如何在注册后手动验证用户身份的示例,如下所示:

$token = new UsernamePasswordToken($user->getUsername(), null, 'main', array('ROLE_USER'));
$this->get('security.context')->setToken($token);
Bu因为我使用doctrine实体作为用户提供者,它没有被正确设置,我不知道如何正确设置。如果我将$user作为第一个参数传递,网页将无限循环。我觉得应该有一个DoctorineUserToken类,但可以;我找不到

你能告诉我怎么走吗

编辑:

如果我将行更改为:

$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
在这里,我传递$user作为第一个参数,并从user对象获取角色,然后重定向将导致无限循环

我迷路了。

请尝试以下代码:

$token = new UsernamePasswordToken($user->getUsername(), null, 'secured_area', array('ROLE_USER'));
$this->get('security.context')->setToken($token);
$providerKey必须是get form secure.yml:

firewalls:
    secured_area:
        form_login:
            check_path: /signInCheck
            login_path: /signIn
        logout: true

您是否使用FOSUserBundle处理登录?如果没有,为什么不呢?在
security.yml
@Kasheen中,您的防火墙肯定被称为“main”吗?我把防火墙名称和提供商名称混淆了。放置正确的防火墙名称后,问题得到解决。谢谢你。@Leo,说得真有意思
UsernamePasswordToken
说,
providerKey
作为第三个参数,我一直使用我的防火墙名称,但是我刚刚注意到我的防火墙和用户提供者都被称为
main
。我认为它确实应该是您希望进行身份验证的防火墙的名称。