在我的 API 中,用户注册后,将使用以下代码创建一个令牌:
$token = JWTAuth::fromUser($user);
当我使用 dd($token) 时,返回这个:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjE6ODAwMFwvYXBpXC9sb2dpbiIsImlhdCI6MTYyNjgxNDM2NCwiZXhwIjoxNjI2ODE3OTY0LCJuYmYiOjE2MjY4MTQzNjQsImp0aSI6Imd3eDZnVzNGTGN4MzlMekIiLCJzdWIiOjQsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ._m-7tojFaupUbAibDUbLJm6BeuFVL_etdFlwj0h5664
那么如何在邮递员授权中不输入此令牌的情况下找到用户的ID?
无论您从请求标头中获得什么令牌字符串,都可以使用它来创建像这样的
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');
你可以使用
$userData = auth()->user();
获取用户数据