在 jwt-auth laravel 中获取自定义声明
Posted
技术标签:
【中文标题】在 jwt-auth laravel 中获取自定义声明【英文标题】:Get custom Claim in jwt-auth laravel 【发布时间】:2016-01-06 02:09:06 【问题描述】:我需要帮助来解决问题。 我正在使用 lumen(laravel 5.1) 为移动应用程序创建 Web 服务。我正在使用 JWT 进行身份验证,它会返回一个令牌。
第一个问题是,如果我使用来自另一个系统/设备的相同令牌,那么它会验证并返回请求的信息。我希望该令牌应仅对用户获取令牌的该设备/系统有效。
第二个问题是我在 JWT 令牌中添加了一些自定义声明。我想从令牌中获取自定义声明值。我发现了类似的问题Get custom claims from a JWT using Owin,但不知道我是如何在 php 中使用它的。
请帮我解决。
【问题讨论】:
【参考方案1】: // SENDING:
$user = User::first();
$payload = [
'foo' => 'bar'
];
$guard = 'api'; // or web
$token = auth($guard)->claims($payload)->login($user);
// RECEIVING:
$data = auth($guard)->payload()->get('foo');
【讨论】:
【参考方案2】:我找到了解决办法,这会对你有所帮助。
$token = JWTAuth::getToken();
$payload = JWTAuth::decode($token);
$validate = $payload->get('foo'); // return true or false
if($validate)
// some condition
else
// some condition
【讨论】:
【参考方案3】:我得到了解决方案。这是解决方案可能会帮助其他人
$payload = JWTAuth::parseToken()->getPayload();
// then either of
$payload->get('foo');
$payload['foo'];
【讨论】:
以上是关于在 jwt-auth laravel 中获取自定义声明的主要内容,如果未能解决你的问题,请参考以下文章
tymon/jwt-auth Laravel:无法验证令牌签名