2017-08-24 35 views
3

我想在我的应用程序的调用api认证实施passport。我已经完成了官方文档中提到的配置。 我有这个在我的身份验证后卫:Laravel护照:AUTH:API行为就像AUTH:网络

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

而且,这在我的AuthServiceProvider'sboot()方法:

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', '[email protected]'); 
}); 

我正在发送header这样的请求:

Authorization:Bearer $accessToken 

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

laravel的版本是33年4月5日。

+0

你能告诉我们所有的路线吗? –

+0

@AntonisTsimourtos我用所有的路线更新了我的问题。请看一看。 – Saani

+0

那么错误显然意味着“登录”路线没有定义。你可以尝试运行'php artisan make:auth' [脚手架需要的认证页面](https://laravel.com/docs/5.4/authentication)。然后你可以尝试使用'php artisan clear:cache' –

回答

4

如果验证失败,Laravel抛出AuthenticationException例外。这个异常由Laravel异常处理程序处理,并最终在app/Exceptions/Handler.php文件中调用unauthenticated()方法。

你可以从方法看,如果您的请求需要一个JSON响应,你会得到一个401未认证的响应。但是,如果您不期待JSON响应,它只会重定向到名为“login”的路由。如果你没有名为“login”的路由,这显然会失败。

您的要求“expectsJson”当你发送无论是“X-请求 - 由于:XMLHttpRequest的”头或“接受:应用/ JSON的”头。否则,它被视为正常的网络请求。

如果你想改变你的应用程序如何处理未经授权的用户,该unauthenticated()方法是改变之一。