使用通行证获取访问令牌和刷新令牌。对于注销功能,应该发布/获取什么,URL是什么?
API路线:
Route::group([
'middleware' => 'auth:api'
], function() {
Route::get('logout', 'api\LoginController@logout');
});
public function logout(Request $request)
{
$request->user()->token()->revoke();
return $this->loggedOut($request);
}
答案 0 :(得分:0)
如果您具有前缀 auth ,则该前缀应该是正确的注销路径。如果不是,请从网址中删除 auth 。
令牌应该出现在 axios标头中,因为退出路由位于 auth:api 中间件下,因此您将在退出时将其撤消方法。
评论中要求的代码段
登录用户后,您将令牌添加到axios标头
axios.defaults.headers['Authorization']='Bearer ' + token;
axios.defaults.headers['Content-Type']='application/json';
发出注销请求时
axios.get('/api/auth/logout')
.then(response => {
localStorage.removeItem("token");
localStorage.removeItem("token_type");
delete axios.defaults.headers['Authorization'];
}).catch(error=> {
});
在控制器的注销方法中,您撤消了用户令牌
$request->user()->token()->revoke();
return response()->json([
'message' => 'Successfully logged out'
]);
答案 1 :(得分:0)
您必须在成功登录后获得的access_token
标头中传递Authorization
。
您的登出路线受护照保护,因此,当调用受Passport保护的路线时,您的应用程序的API使用者应在<<>中将其访问令牌指定为 Bearer 令牌。他们请求的strong>授权标头。
例如,在使用Guzzle HTTP库时:
$response = $client->request('GET', '/api/logout', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer '.$accessToken,
],
]);