TokenGuard类总是需要api_token

时间:2017-02-13 06:12:07

标签: laravel laravel-5.2 laravel-5.1 laravel-5.3 laravel-5.4

我正在使用AngularJs和Laravel 5.4

在默认警卫中,我将web guard更改为api。最后看起来如下。

'defaults' => [
    'guard' => 'api',
    'passwords' => 'users',
],

当我使用Angular Js的用户名和密码发送请求时......我总是得到无效凭证,因为..

TokenGuard类有一个名为validate的方法,它需要api_token值,但我在登录页面上。

我假设为了获取令牌,我需要在登录方法中使用$this->guard(web)

这是正确的做法还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

默认情况下,routes/api.php中定义的所有路由都具有api中定义的app/Providers/RouteServiceProvider::mapApiRoutes()中间件。因此,您始终需要传递api_token。

您可以在api路线中定义登录路线

Route::post('login', 'api\AuthController@login'); //out of the group

从AngularJS发布

$http.post({
    url: 'http://localhost/api/login',
    data: $scope.userda,
    headers: {
        Authorization: ''
    }
}).then(...)

然后使用auth:api

定义组中的所有其他路线
Route::group(['middleware' => 'auth:api'], function(){
    //Other routes here
});

在angular中,将Authorization标头设置为api_token的值。因此,在登录之前,它将为空,登录后将具有用户api_token的值。