Laravel 护照:auth:api 表现得像 auth:web
Laravel Passport: auth:api behaving like auth:web
我正在尝试在我的应用程序中实施 passport
以验证 api
调用。我已经按照官方文档中的说明进行了配置。
我的 auth guard 中有这个:
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
而且,这在我的 AuthServiceProvider's
boot()
方法中:
Passport::routes();
这是我正在尝试访问的route
:
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');
});
我在这样的请求中发送 header
:
Authorization:Bearer $accessToken
我的问题是:1. 当请求受保护的路由时,它会将我转到登录页面,但我希望它转到 return 401。我该怎么做?
我的laravel
版本是5.4.33。
当验证失败时,Laravel 抛出一个 AuthenticationException
异常。此异常由您的 Laravel 异常处理程序处理,并最终调用 app/Exceptions/Handler.php
文件中的 unauthenticated()
方法。
您可以从该方法中看出,如果您的请求需要 json 响应,您将收到 401 Unauthenticated 响应。但是,如果您不期望 json 响应,它只会重定向到名为 "login" 的路由。如果您没有名为 "login".
的路由,这显然会失败
当您发送 "X-Requested-With: XMLHttpRequest" header 或 "Accept: application/json" header 时,您的请求 "expectsJson"。否则视为正常的网络请求。
如果您想更改您的应用程序处理未经身份验证的用户的方式,unauthenticated()
方法就是要更改的方法。
在 postman 的 Headers 中添加此代码。
key Value
Accept application/json
谢谢
我正在尝试在我的应用程序中实施 passport
以验证 api
调用。我已经按照官方文档中的说明进行了配置。
我的 auth guard 中有这个:
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
而且,这在我的 AuthServiceProvider's
boot()
方法中:
Passport::routes();
这是我正在尝试访问的route
:
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');
});
我在这样的请求中发送 header
:
Authorization:Bearer $accessToken
我的问题是:1. 当请求受保护的路由时,它会将我转到登录页面,但我希望它转到 return 401。我该怎么做?
我的laravel
版本是5.4.33。
当验证失败时,Laravel 抛出一个 AuthenticationException
异常。此异常由您的 Laravel 异常处理程序处理,并最终调用 app/Exceptions/Handler.php
文件中的 unauthenticated()
方法。
您可以从该方法中看出,如果您的请求需要 json 响应,您将收到 401 Unauthenticated 响应。但是,如果您不期望 json 响应,它只会重定向到名为 "login" 的路由。如果您没有名为 "login".
的路由,这显然会失败当您发送 "X-Requested-With: XMLHttpRequest" header 或 "Accept: application/json" header 时,您的请求 "expectsJson"。否则视为正常的网络请求。
如果您想更改您的应用程序处理未经身份验证的用户的方式,unauthenticated()
方法就是要更改的方法。
在 postman 的 Headers 中添加此代码。
key Value
Accept application/json
谢谢