【问题标题】:Laravel passport change header authenticationLaravel 护照变更标头认证
【发布时间】:2018-10-02 07:32:29
【问题描述】:

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

是否可以将header的名称更改为X-Access-Token?

我看到护照用的包

League\OAuth2\Server\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]));

我尝试在此处进行更改,但似乎标题的验证发生在此方法之前。

【问题讨论】:

    标签: laravel http laravel-passport


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      有许多基本代码片段依赖于 authorization 标头的存在。

      如果您愿意,可以自己滚动。

      还要注意authorization 是一个网络标准 请求标头。 X-Access-Token 是一个response header 模式。

      *编辑** 鉴于我们在下面的对话,您可以使用中间件和中间件优先级来决定哪个先运行,观察具有X-Access-Token 的请求并使用addHeader 将该标头的值转换为authorization

      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);
      }
      

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

      【讨论】:

      • 感谢您的回复。我不知道从哪里以及如何开始搜索。
      • @StefanoMaglione 在使用严重依赖 League2/Oauth 包的 Passport 时尝试执行此操作将是一项繁重的工作。相反,我建议尝试弄清楚为什么有必要进行此更改并重新考虑是否真的有必要,然后再走这条路。
      • 我同意你对复杂性的看法。我构建了一个需要使用需要标头名称 X-access-token 的自动工具测试的 api 服务。否则失败。而我建立的这个api服务是用来测试的
      • 为什么不同时发送X-Access-TokenAuthorization?似乎可以工作
      • 伟大的灵魂,它的作品。有一个小错误,我这样修复: $request->headers->set('Authorization', $request->headers->get('X-Access-Token'));返回 $next($request);
      猜你喜欢
      • 2019-03-01
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-05
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      相关资源
      最近更新 更多