2017-09-24 7 views
0

http_request_bodyからトークンを取得できるようにするには、データを送信する必要がある迷惑な理由として、トークンがクエリ文字列の一部として送信するには長すぎるし、送信ヘッダーは受け付けません。Laravel jwt.auth本文からトークンを取得する

とにかく、私は次のようにjwt.auth GetUserFromTokenミドルウェアを編集することができた:

if (! $token = $this->auth->setRequest($request)->getToken()) { 
    if(! $token = $request->get('token')) { 
     return $this->respond('tymon.jwt.absent', 'token_not_provided', 400); 
    } 
} 

これは動作しますが、より恒久的になり、より良い方法がある場合、私は疑問に思って? 明らかに、私がデプロイするか、パッケージが更新されると、これは無効になります。

ベンダーのミドルウェアではなく、アプリ内からこのクラスを拡張または上書きする方法がありますか?

ありがとうございます! @Moeenバスラ@apokryfosの助けを借りて

+2

パッケージのベンダールートを上書きする方法を確認することができます https://stackoverflow.com/questions/28832146/can-i-use-laravel-5-midware-to-allow-packages-to- override-app-routes –

+0

問題が何であるか分かりません。通常、リクエスト文字列で送信するクエリ文字列として送信するには時間がかかりすぎますが、その場合は '$ request-> get( "token") 'は、トークンがクエリ文字列内にあるかのように動作するはずです。 – apokryfos

+0

@apokryfosあなたが理解していないと思っていますが、修正は機能します。問題は本当に修正を永続的にする方法です。 –

答えて

0

、それは既存のクラスをオーバーライドするとアプリがデプロイまたはパッケージが更新されたときに影響されないようにミドルウェアを拡張するために管理され、このHow to override vendor class file?

追加MyGetUserFromToken.php

namespace App\Overrides\Tymon; 

use Tymon\JWTAuth\Middleware\GetUserFromToken; 

class MyGetUserFromToken extends GetUserFromToken { 

そしてカーネルで

//use Tymon\JWTAuth\Middleware\GetUserFromToken; 
use App\Overrides\Tymon\MyGetUserFromToken; 

... 

'jwt.auth' => MyGetUserFromToken::class, 

うまくいけば、これはその後も他の人を助けます。

関連する問題