Php Laravel Passport:auth:api的行为类似于auth:web
我试图在我的应用程序中实现Php Laravel Passport:auth:api的行为类似于auth:web,php,laravel,authentication,access-token,laravel-passport,Php,Laravel,Authentication,Access Token,Laravel Passport,我试图在我的应用程序中实现passport,以验证api调用。我已经完成了官方文档中提到的配置。 我的授权保护中有: 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], 在我的AuthServiceProvider的boot()方法中: Passport::routes(); 这是我试图访问的路线: Route::middleware
passport
,以验证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个未经验证的响应。但是,如果您不期望json响应,它只会重定向到名为“login”的路由。如果您没有名为“login”的路由,这显然会失败
当您发送“X-request-With:XMLHttpRequest”头或“Accept:application/json”头时,您的请求为“expectsJson”。否则,它将被视为正常的web请求
如果要更改应用程序处理未经身份验证的用户的方式,可以更改unauthenticated()
方法。在postman的标题上添加此代码
key Value
Accept application/json
谢谢你能告诉我们所有路线吗?@AntonisTsimourtos我已经用所有路线更新了我的问题。请看一看。这个错误显然意味着“登录”路径没有定义。您可以尝试运行php artisan make:auth
。然后你可以尝试使用php-artisan-clear:cache
我按照你说的做了,现在它将它发送到登录页面而不是返回错误。所以“问题解决了”。现在你可能不得不考虑你想做什么?若用户未通过身份验证,是否要返回401或将其重定向到登录页面?你也可以更新你的问题。