因此,我正在创建一个使用Vue.js进行前端并与Laravel后端进行通信的应用。目前,我正在实现授权/认证部分。为此,我已经安装了Laravel Passport。成功登录后,我将返回存储在cookie中的令牌(使用vue-cookies):
$cookies.set('user-data-cookie', JSON.stringify(user));
user
包含用户数据和访问令牌。
但是我在注销时遇到问题。我正在发送带有从我创建的辅助函数中获得的“接受”和“授权”的标头:
export const getHeader = () => {
const tokenData = $cookies.isKey('user-data-cookie') ? $cookies.get('user-data-cookie').access_token : "";
//console.log(tokenData)
return {
'Accept': 'application/json',
'Authorization': 'Bearer ' + tokenData,
}
}
到目前为止,一切都很好。我正在检查是否发送了承载令牌。这是我的laravel路线:
Route::post('/logout', 'API\AuthController@logout');
我的AuthController中的注销方法:
public function logout(Request $request)
{
return $this->auth->logout($request);
}
我的Auth服务中的注销方法:
public function logout(Request $request)
{
if (!$this->guard()->check()) {
return response()->json(["message" => "access denied"], 400);
}
$request->user('api')->token()->revoke();
return response()->json(["message" => "Logout Success"], 204);
}
通过浏览器注销登录(并检查是否已在cookie中设置了auth令牌)后,我得到了400 Bad Request
,因此我猜测它在检查时返回了false
$this->guard()->check()
。
如果我使用Postman登录,请获取令牌,然后使用不记名令牌进行发布(也使用Postman):
1。第一次单击发送时,我什么也没有得到,响应中没有任何内容。响应如下:
< HTTP/1.1 204 No Content
< Host: 127.0.0.1:8000
< Date: Tue, 27 Aug 2019 05:04:09 +0000
< Connection: close
< X-Powered-By: PHP/7.2.8
< Cache-Control: no-cache, private
< Date: Tue, 27 Aug 2019 05:04:09 GMT
< X-RateLimit-Limit: 60
< X-RateLimit-Remaining: 56
< Content-type: text/html; charset=UTF-8
2。。如果我再次单击发送,则会得到400 Bad Request
我在做什么错了?