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它。
使用 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它。