2017-09-24 111 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); 
    } 
} 

這工作,但我不知道是否有更好的方法,這將是更持久? 很顯然,當我部署或更新包時,這將會被覆蓋。

有沒有辦法從我的應用程序中擴展或超越這個類,而不是直接在供應商中間件?

謝謝!

+2

你可以檢查此鏈接如何覆蓋供應商路線與包 https://stackoverflow.com/questions/28832146/can-i-use-laravel-5-middleware-to-allow-packages-to-覆蓋應用程序路線 –

+0

不知道什麼問題是,通常當太長的時間發送作爲一個查詢字符串發送它通過後,它會發送它在請求正文,但在這種情況下'$ request-> get( 「token」)'仍應該像查詢字符串中的標記一樣工作。 – apokryfos

+0

@apokryfos認爲你錯過理解,修改確實有效,問題真的在於如何使修改永久 –

回答

0

隨着@Moeen巴士拉@apokryfos的幫助下,這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, 

希望這會再幫助別人也。