在laravel中使用JWT令牌查找用户ID

问题描述 投票:0回答:3

在我的 API 中,用户注册后,将使用以下代码创建一个令牌:

$token = JWTAuth::fromUser($user);

当我使用 dd($token) 时,返回这个:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjE6ODAwMFwvYXBpXC9sb2dpbiIsImlhdCI6MTYyNjgxNDM2NCwiZXhwIjoxNjI2ODE3OTY0LCJuYmYiOjE2MjY4MTQzNjQsImp0aSI6Imd3eDZnVzNGTGN4MzlMekIiLCJzdWIiOjQsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ._m-7tojFaupUbAibDUbLJm6BeuFVL_etdFlwj0h5664

那么如何在邮递员授权中不输入此令牌的情况下找到用户的ID?

laravel api authentication jwt postman
3个回答
1
投票

简单,使用https://jwt.io

在“sub”(主题)中,您将看到用户 ID。

了解更多关于 jwt 代币


0
投票

无论您从请求标头中获得什么令牌字符串,都可以使用它来创建像这样的

Token
类的对象

$token = new Token(token_string);

之后,在

$token
类中使用
JWTAuth
,如下所示

JWTAuth::setToken($token);

最后调用

getPayload
类的
JWTAuth
方法来获取实际数据

JWTAuth::getPayload($token)->get('sub')

完整代码

use JWTAuth;
use Tymon\JWTAuth\Token;
...
...

// generate token
$user = \App\User::find(1);
$tokenString = JWTAuth::fromUser($user);

// decode token to get actual data
$token = new Token($tokenString); // here you use header insted of $tokenString
JWTAuth::setToken($token);
$subject = JWTAuth::getPayload($token)->get('sub');

0
投票

你可以使用

$userData = auth()->user();

获取用户数据

© www.soinside.com 2019 - 2024. All rights reserved.