首页 > 解决方案 > Laravel 护照 - 中间件 client_credentials 不记名令牌不起作用

问题描述

我有一个 laravel 项目,使用 Passport Client Credentials 获取承载令牌,我使用创建客户端 ID 和机密 ID

php artisan passport:client --personal

并得到

客户 ID 和秘密 ID

并像这样从邮递员那里获取承载/访问代码 承载代码

但是在使用这个 barear 调用其他这样的 api 但不工作之后

Route::middleware('client_credentials')->post('/test',[ApiController::class, 'va_bills']);

和输出只是

{
    "message": "Unauthenticated."
}

但是,如果我将路由更改为闭包函数,它的工作方式如下

Route::middleware('client_credentials')->post('/test', function (Request $request) {
    echo 'nice';
});

输出闭包函数

我已将此添加到 kernel.php

protected $routeMiddleware = [
..
'client_credentials'     => \Laravel\Passport\Http\Middleware\CheckClientCredentials::class,
..

并更改驱动程序

'api' => [
            'driver' => 'passport',//instead of token 
            'provider' => 'users',
            'hash' => false,
        ],

我也将此添加到.htaccess,

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

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

但是对于您的信息,我之前没有 .htaccess 并且我使用php artisan serve 我已经阅读了许多解决方案但仍然无法正常运行我的应用程序,

有人可以帮我解决这个问题吗?感谢您的时间。

标签: phplaravellaravel-passportclientcredential

解决方案


推荐阅读