2017-06-16 2 views
1

私はTymonのJWTAuthを使用して、アプリケーションをトークンからステートレスにAPIに接続しています。しかし問題は、ペイロードデータでトークンをデコードすると、issの値がAPIのURLそのものであるということです。LaravelまたはLumen JWTはデフォルトのクレームを取り除きます

値を変更すると、キーがトークンに渡されなくなります。ここで

は、トークンの復号値は、私は、カスタムクレームを追加することができますがissキーを削除することができません(私は例の目的のために、ここで値を編集した)

{ 
    "iss": "http://localhost.com/api/", 
    "iat": 1111111111, 
    "exp": 2222222222, 
    "nbf": 3333333333, 
    "jti": "xxxxxxxxxxxxxx", 
    "sub": 1234, 
    "foo": "bar", 
    "baz": "bob" 
} 

です。

$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に記載されているように、デフォルトクレーム値は設定すると変更できます。

+0

jwt configのrequired_claimsアレイから削除しましたか? –

+0

@ JigarShahはい私はしたし、それはまだデフォルトの主張が含まれています。 – basagabi

+0

はいそれはPayloadFactoryのdefaultClaimsになります –

答えて

0

を作品パッケージファイル

ホープの変更を加える必要はありません。デフォルトクレーム。これにより

$customClaims = ['iss' => 'xxx', 'baz' => 'bob']; 
$payload = $jwtFactory->customClaims($customClaims)->make(); 

iss(デフォルトの請求)の値は、今xxxです。これはdocumentationのように奇妙に思えますが、それは動作しないデフォルトのクレームを上書きする別の方法を持っています。

+1

私は同じことをしていた:)乾杯! –

0

NULLにISS値や何かを設定するために、あなたが

array:6 [ 
    "sub" => 4 
    "iss" => null // I have set value to null 
    "iat" => 1497603439 
    "exp" => 1497963439 
    "nbf" => 1497603439 
    "jti" => "O6zdDsWKt3X7hszh" 
] 

EDIT

缶のようにデコードされたトークンを取得します。その後iss()

public function iss() 
    { 
     return NULL; 
     // return $this->request->url(); 
    } 

を変更する必要がありますあなたはこれを試してみてください:

私はこれでテストしました。私のために働いています。また、このために、我々は、私はオーバーカスタム要求したカスタムの特許請求の範囲の値が設定することで、デフォルトの特許請求の範囲の値を書き込むことができました

+0

ええ、それを試して、それが働いたが、私たちが直接修正しているので、これを行う最良の方法ではないと思います。コードベースに触れないようにする方法はありますか? – basagabi

関連する問題