我正在使用AngularJs和Laravel 5.4
在默认警卫中,我将web guard
更改为api
。最后看起来如下。
'defaults' => [
'guard' => 'api',
'passwords' => 'users',
],
当我使用Angular Js的用户名和密码发送请求时......我总是得到无效凭证,因为..
TokenGuard
类有一个名为validate
的方法,它需要api_token值,但我在登录页面上。
我假设为了获取令牌,我需要在登录方法中使用$this->guard(web)
?
这是正确的做法还是我错过了什么?
答案 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的值。