使用 LexikJWTAuthenticationBundle、FOSRest、FOSUser 如何通过令牌获取经过身份验证的用户配置文件。可能吗?
因此,假设用户已经通过 LexikJWT 进行了身份验证,并且我有一个 api 端点,就像/api/profile
我发送令牌的地方一样,我希望获得指定的用户数据。
我正在使用带有 Redux 的前端 ReactJS。
使用 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' ]
这将返回您的用户 - 但请注意,这取决于用户在身份验证期间如何设置令牌,这也可能只是您的用户名作为字符串。但基本上你可以从你当前的 $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());`
之后你序列化数据,创建新的响应并返回它。