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
。我认为它确实应该是您希望进行身份验证的防火墙的名称。