我使用的是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]));
我试图在这里进行更改但似乎在此方法之前验证了标题。
答案 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,
];