Laravel jwt.auth从Body中检索令牌

时间:2017-09-24 21:54:56

标签: php laravel-5 jwt laravel-middleware

我希望能够从http_request_body中检索令牌,因为我需要从中发送数据的令人讨厌的原因,令牌太长而无法作为查询字符串的一部分发送,并且他们不接受发送头

无论如何,我已经设法将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);
    }
}

这有效,但我想知道是否有更好的方式更永久? 显然,当我部署或更新软件包时,这将被覆盖。

有没有办法扩展或覆盖我的应用程序中的这个类,而不是直接在供应商中间件中?

谢谢!

1 个答案:

答案 0 :(得分:0)

在@Moeen Basra @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,

希望这也可以帮助其他人。