我有一个控制器,应该通过一个简单的表单添加用户,但我不能让用户手动验证.
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken
public function addAction($user)
{
$token =new UsernamePasswordToken(
$user->getUsername(),
$user->getPassword(),
'secured_area',
$user->getRoles()
);
$this->get('security.context')->setToken($token);
// as suggested in some other answers
$request->getSession()->set('_security_secured_area', serialize($token));
// as suggested in http://techblog.zabuchy.net/2012/manually-authenticate-symfony-2-user/
return $this->redirect($this->generateUrl('acme_project_secure_show' )
);
}
}
Run Code Online (Sandbox Code Playgroud)
重定向到安全路由工作,但是该方法$this->getUser()返回null,因为身份验证设置不正确...我可以从用户$user= $this->get('security.context')->getToken();而不是$user= $this->get('security.context')->getToken()->getUser();快捷方式获取用户,$this->getUser() 看看这里的书
.
问题解决了 - 缺少两点:1)有必要InteractiveLoginEvent为链接发送-thanks mpm 2)该控制器的路由不在secured_area防火墙下 - merci Florian;)
| 归档时间: |
|
| 查看次数: |
17164 次 |
| 最近记录: |