我使用Tymon的JWTAuth以無狀態方式將應用程序連接到api,直到代幣。但問題是,當我解碼令牌時,在有效負載數據上,iss
值是API url本身。Laravel或Lumen JWT刪除默認聲明
如何更改該值將密鑰從傳遞到令牌中移除?
這裏的令牌的解碼值(我只是編輯的值在這裏例如目的)
{
"iss": "http://localhost.com/api/",
"iat": 1111111111,
"exp": 2222222222,
"nbf": 3333333333,
"jti": "xxxxxxxxxxxxxx",
"sub": 1234,
"foo": "bar",
"baz": "bob"
}
我可以添加自定義的要求,但無法去除iss
關鍵。
$token = $jwt->attempt($request->only(['username', 'password']));
$customClaims = ['foo' => 'bar', 'baz' => 'bob'];
$payload = $jwtFactory->customClaims($customClaims)->make(true);
$token = $jwt->encode($payload);
if ($token === false) {
echo 'invalid credentials';
} else {
echo 'valid user';
}
我甚至嘗試: $jwtFactory->iss('http://example.com')->foo(['lol'])->make();
,只有foo
關鍵或者說「自定義聲明」的價值觀正在改變,但不是默認的索賠。但如documentation所述,設置時可以更改默認聲明值。
你從jwt config的required_claims數組中刪除了嗎? –
@JigarShah是的,我做了,它仍然包含默認聲明。 – basagabi
是的,它會根據PayloadFactory中的defaultClaims –