LexikJWT 通过令牌获取用户个人资料

LexikJWT get user profile by token

使用 LexikJWTAuthenticationBundle、FOSRest、FOSUser 如何通过令牌获取经过身份验证的用户配置文件。可能吗?

所以假设用户已经通过 LexikJWT 进行了身份验证,并且我有一个 api 端点,如 /api/profile 我发送令牌的地方,我希望获得指定的用户数据。

我正在使用带有 Redux 的前端 ReactJS。

这是一个在用户已经通过身份验证时如何通过服务获取用户的示例:

class UserService
{

    /** @var  TokenStorageInterface */
    private $tokenStorage;

    /**
     * @param TokenStorageInterface  $storage
     */
    public function __construct(
        TokenStorageInterface $storage,
    )
    {
        $this->tokenStorage = $storage;
    }

    public function getCurrentUser()
    {
        $token = $this->tokenStorage->getToken();
        if ($token instanceof TokenInterface) {

            /** @var User $user */
            $user = $token->getUser();
            return $user;

        } else {
            return null;
        }
    }
}

在你的services.yml中:

tenant_user_service:
    class: YourBundle\YourPackage\UserService
    arguments: [ '@security.token_storage' ]

这将 return 您的用户 - 但请注意,根据身份验证期间用户如何设置令牌,这也可能只是您的用户名字符串。但基本上您可以从当前的 $token->getUser().

中获取任何内容

我是新手,但我可以试试...

你可以像这样使用注解

@Security("is_granted('ROLE_USER')")

在你的控制器中和类似$this->getUser()->getUsername();的东西来获取用户名。

示例:

$user = $this->get('doctrine.orm.default_entity_manager')
    ->getRepository('AppBundle:User')
    ->FindOne($this->getUser()->getUsername());`

在序列化数据之后,创建新的响应并return它。