如何以编程方式验证用户身份

Fra*_*cis 4 symfony

我有一个控制器,应该通过一个简单的表单添加用户,但我不能让用户手动验证.

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() 看看这里的书 .

Fra*_*cis 6

问题解决了 - 缺少两点:1)有必要InteractiveLoginEvent为链接发送-thanks mpm 2)该控制器的路由不在secured_area防火墙下 - merci Florian;)