php之获取经过身份验证的用户 onAuthenticationSuccess

shihaiming 阅读:24 2024-09-07 23:24:14 评论:0

我有以下身份验证处理程序:

class LoginAuthSuccessHandler implements AuthenticationSuccessHandlerInterface, AuthenticationFailureHandlerInterface 
{ 
    private $router; 
    private $container; 
 
    /** 
    * Constructor 
    * @param RouterInterface   $router 
    */ 
    public function __construct(RouterInterface $router, $container) 
    { 
        $this->router = $router; 
        $this->container = $container; 
    } 
 
    public function onAuthenticationSuccess(Request $request, TokenInterface $token) 
    { 
        if ($request->isXmlHttpRequest()) { 
            $user =  $this->container->get('security.context')->getToken()->getUser(); 
            $result = array('success' => true, 'user' => $user); 
            return new Response(json_encode($result)); 
        } else { 
            $route = $this->router->generate('ShopiousMainBundle_profile'); 
 
            $referrer_url = $request->server->get('HTTP_REFERER'); 
            if (strstr($referrer_url, '/items/')) { 
                 $route = $referrer_url; 
            } 
 
            return new RedirectResponse($route); 
        } 
    } 
 
    public function onAuthenticationFailure(Request $request, AuthenticationException $exception) 
    { 
        if ($request->isXmlHttpRequest()) { 
            $result = array('success' => false, 'message' => $exception->getMessage()); 
            return new Response(json_encode($result)); 
        } else { 
            // Handle non XmlHttp request here 
        } 
    } 
} 

为什么是这样:
$user =  $this->container->get('security.context')->getToken()->getUser(); 

返回空?此时我如何获得经过身份验证的用户?

请您参考如下方法:

您应该使用 $token您作为参数接收的变量而不是 $this->container->get('security.context')->getToken() .

$user = $token->getUser(); 


标签:PHP
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号