LexikJWTAuthenticationBundle:获取服务器端的当前用户

时间:2018-01-06 23:41:31

标签: symfony jwt lexikjwtauthbundle

我正在使用Symfony 3.4和LexikJWTAuthenticationBundle 2.4。您知道如何检索正在访问API端点的用户吗?

通常情况下,我会拨打$user = $this->get('security.token_storage')->getToken()->getUser();,但在这种情况下似乎不起作用。

2 个答案:

答案 0 :(得分:1)

为您提供建议,请使用控制器中的容器键。

当然,最好在这里发送您的错误!

Symfony 4

protected function getCurrentUser()
    {

        if (!$this->container->has('security.token_storage')) {
            throw new \LogicException('The Security Bundle is not registered in your application.');
        }
        if (null === $token = $this->container->get('security.token_storage')->getToken()) {
            return;
        }
        if (!is_object($user = $token->getUser())) {
            // e.g. anonymous authentication
            return;
        }
        return $user;
    }

答案 1 :(得分:-1)

我遇到了同样的问题,您可以使用以下方式获取当前用户的ID:

$current_user = $this->getUser();

$id = $current_user->getId();

在你的控制器内。