在 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:无法验证令牌签名

(API) Laravel 7 上不允许使用 tymon/jwt-auth 的 405 方法

注销不适用于 Laravel JWT-auth

laravel安装jwt-auth及验证(实例)

laravel安装jwt-auth及验证(实例)

如何在 Laravel 和 Vue.js 中使用 jwt-auth 检查用户是不是经过身份验证