Laravel 5.3 + Passport:始终未经验证的错误

时间:2017-04-06 08:56:43

标签: laravel-5.3 laravel-passport

我总是收到"未经身份验证的错误"在我当前的项目中使用Passport时。这就是我做了3天的事情:

  • 安装和配置Passport(如文档所述)
  • 使用Postman
  • 请求令牌(密码授予令牌)
  • 使用令牌
  • 请求受保护的路由(auth:api中间件)
  • 得到 `{"错误":"未经身份验证。" }`
  • 搜索,搜索和研究
  • 得到 `{"错误":"未经身份验证。" }`

然后,我安装了一个新的L5.3和一个新的数据库,工作正常。即使我当前的数据库!

我已经尝试了我找不到的所有解决方案......

任何人都可以帮助我吗?任何想法都将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:1)

我遇到了和你一样的问题,到处寻找解决方案。

在我的案例中,似乎是Apache的错。 Apache正在删除标题"授权:Bearer TOKEN_HERE"所以auth:api不会按预期工作(获得401未授权)。

我们最终尝试添加到.htaccess:

RewriteCond %{HTTP:Authorization} ^(.*)

RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

它神奇地奏效了。

我真的希望它有所帮助,我们花了一整天时间尝试了很多解决方案,这对我们有用。

答案 1 :(得分:1)

您曾用grant_type生成此令牌?

可能的解决方案如下

1:如果您使用客户端凭据生成access_token,则必须按如下所示打开client_credentials,中间件。

1.1添加到\ App \ Http \ Kernel.php

中的routeMiddleware
'client_credentials'     => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,

1.2在您的路线中也使用'client_credentials'中间件。

Route::group(['prefix' => 'v1','middleware' => 'client_credentials'], function () {

    // Your routes here

});

2:格式类型密码

2.1:创建密码授予客户端

php artisan passport:client --password

2.2:请求具有以下标题字段的标记

    'grant_type' => 'password',
    'client_id' => 'client-id',
    'client_secret' => 'client-secret',
    'username' => 'taylor@laravel.com',
    'password' => 'my-password',

终点/ oauth / token

您现在获得的令牌可以让您访问您的api。

答案 2 :(得分:0)

我的问题是一个问题,我正在构建GraphQL api,并在中间件行中的配置文件“ graphql.php”中放置了

'middleware' => ['auth'],

正确的方法是:

'middleware' => ['auth:api'],