Laravel护照更改标题认证

时间:2018-04-21 23:12:31

标签: laravel http laravel-passport

我使用的是Laravel护照,它需要在每个请求中发送要发送的标头身份验证。

是否可以将标题名称更改为X-Access-Token?

我看到护照使用了包裹

  

联赛\的OAuth2 \服务器\ AuthorizationValidators;

方法:

/**
 * {@inheritdoc}
 */
public function validateAuthorization(ServerRequestInterface $request)
{
    dd($request);
    if ($request->hasHeader('authorization') === false) {
        throw OAuthServerException::accessDenied('Missing "Authorization" header');
    }

    $header = $request->getHeader('authorization');
    $jwt = trim(preg_replace('/^(?:\s+)?Bearer\s/', '', $header[0]));

我试图在这里进行更改但似乎在此方法之前验证了标题。

2 个答案:

答案 0 :(得分:2)

有很多基本的代码依赖于authorization标题的存在。

如果你有这种倾向,你可以自己动手。

另请注意,authorization网络标准请求标头。 X-Access-Token是response header模式。

*编辑** 根据下面的对话,您可以使用中间件和中间件优先级来指定哪个先运行,观察具有X-Access-Token的请求并使用addHeader将该标头的值转换为authorization:< / p>

php artisan make:middleware AuthorizationToolMiddleware

然后在handle函数中:

public function handle($request, Closure $next)
{

    $request->headers->set('Authorization', $request->headers->get('X-Access-Token'));

    return $next($request);
}

此中间件应在其他中间件之前执行,以确保在护照处理请求时设置标头。

答案 1 :(得分:0)

对于Laravel 5.8,您必须强制自定义中间件始终位于调用链的顶部 因此,在您的app\kernel.php中添加-

protected $middlewarePriority = [
        \App\Http\Middleware\AuthorizationToolMiddleware::class,
    ];