无法在Tymon JWT中添加自定义声明

时间:2017-01-10 15:09:32

标签: php laravel jwt

我使用 Tymon JWT 在Laravel中生成我的令牌。我已仔细按照Tymon's github site中的指南添加我的自定义声明:

$customClaims = ['foo' => 'bar', 'baz' => 'bob'];
JWTAuth::attempt($credentials, $customClaims);

我在验证用户身份后设法生成令牌,但是当我用JWT解码器解码令牌时,我只看到默认声明,但不是我的自定义声明。

2 个答案:

答案 0 :(得分:4)

你正在使用 Tymon JWT 版本1.0.0?

来自Github Tymon JWT

  

对于0.5版本。*有关文档,请参阅WIKI

     

1.0.0的文档即将推出,但有一份未完成的指南here

使用

JWTAuth::customClaims(['foo' => 'bar'])->attempt(['login' => '', 'password' => '']);

答案 1 :(得分:0)

我可以通过将 getJWTCustomClaims 方法放在我的 JWTSubject 上来添加自定义声明。

示例:如果要为用户类指定保护措施并将该信息放入令牌中,请执行以下操作:

use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements JWTSubject
{
    /**
     * @return mixed
     */
    public function getJWTIdentifier()
    {
        return $this->getKey();
    }

    /**
     * @return array
     */
    public function getJWTCustomClaims()
    {
        return [
            'guard' => 'admins', // my custom claim, add as many as you like
        ];
    }
}

请注意不要添加太多自定义声明,因为它们会增加令牌的大小。

这是我使用的Tymon-jwt的版本:“ tymon / jwt-auth”:“ dev-develop#f72b8eb as 1.0.0-rc.3.2”

希望这会有所帮助