编程语言
首页 > 编程语言> > php – Laravel Passport:auth:api表现得像auth:web

php – Laravel Passport:auth:api表现得像auth:web

作者:互联网

我正在尝试在我的应用程序中实现护照以验证api调用.我已经完成了官方文档中提到的配置.
我在我的认证中有这个:

'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],

而且,这在我的AuthServiceProvider的boot()方法中:

Passport::routes();

这是我试图访问的路线:

    Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::group(['namespace' => 'Api', 'middleware' => 'auth:api'], function () {
    // Login Controller
   Route::get('/getclc', 'PreController@getClc');
});

我在请求中发送标题,如下所示:

Authorization:Bearer $accessToken

我的问题是:1.当请求受保护的路由时,它会将我发送到登录页面,但我希望它返回401.我该怎么做?

我的laravel版本是5.4.33.

解决方法:

身份验证失败时,Laravel会抛出AuthenticationException异常.此异常由Laravel异常处理程序处理,并最终在app / Exceptions / Handler.php文件中调用unauthenticated()方法.

您可以从该方法中看到,如果您的请求需要json响应,您将获得401 Unauthenticated响应.但是,如果您不期望json响应,它只会重定向到名为“login”的路由.如果您没有名为“login”的路由,这显然会失败.

当您发送“X-Requested-With:XMLHttpRequest”标头或“Accept:application / json”标头时,您的请求“expectedJson”.否则,它被视为普通的Web请求.

如果您想更改应用程序处理未经身份验证的用户的方式,则需要更改unauthenticated()方法.

标签:php,laravel,authentication,access-token,laravel-passport
来源: https://codeday.me/bug/20190828/1750708.html