我总是收到"未经身份验证的错误"在我当前的项目中使用Passport时。这就是我做了3天的事情:
然后,我安装了一个新的L5.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'],