2017-09-24 108 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, 

希望这会再帮助别人也。