我使用 Tymon JWT 在Laravel中生成我的令牌。我已仔细按照Tymon's github site中的指南添加我的自定义声明:
$customClaims = ['foo' => 'bar', 'baz' => 'bob'];
JWTAuth::attempt($credentials, $customClaims);
我在验证用户身份后设法生成令牌,但是当我用JWT解码器解码令牌时,我只看到默认声明,但不是我的自定义声明。
答案 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”
希望这会有所帮助