步骤
拿到cookie里的token_key--> 删除redis里的token-->删除mysql里的refreshToken--清除cookie里的token_key
返回结果(前端根据结果跳转到登录页面)
接口
/**
* 退出登录
* <p>
* 拿到token_key
* -> 删除redis里对应的token
* -> 删除mysql里对应的refreshToken
* -> 删除cookie里的token_key
*
* @return
*/
@GetMapping("/logout")
public ResponseResult logout() {
return userService.doLogout();
}
实现
@Override
public ResponseResult doLogout() {
//拿到token_key
String tokenKey = CookieUtils.getCookie(getRequest(), Constants.User.COOKIE_TOKE_KEY);
if (TextUtils.isEmpty(tokenKey)) {
return ResponseResult.ACCOUNT_NOT_LOGIN();
}
//刪除redis里的token
redisUtils.del(Constants.User.KEY_TOKEN + tokenKey);
//删除mysql里的refreshToken
refreshTokenDao.deleteAllByTokenKey(tokenKey);
//删除cookie里的token_key
CookieUtils.deleteCookie(getResponse(), Constants.User.COOKIE_TOKE_KEY);
return ResponseResult.SUCCESS("退出登录成功.");
}
``