根据Vue.js的请求,在Laravel中使用承载令牌注销问题

时间:2019-08-27 05:08:41

标签: php laravel api http vue.js

因此,我正在创建一个使用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

我在做什么错了?

0 个答案:

没有答案