第五期 - 末
2024年7月15日约 436 字大约 1 分钟
第五期 - 末
用户中心笔记第五期 - 末
用户注销
在 Controller 层 添加用户注销接口 UserController
:
/**
* 用户注销
* @param request 请求对象
* @return 结果
*/
@PostMapping("/logout")
public Integer userLogout(HttpServletRequest request) {
if (request == null) {
return -1;
}
return userService.userLogout(request);
}
在 Service 层实现接口 UserServiceImpl
:
/**
* 用户注销实现
* @param request 请求对象
* @return 结果
*/
@Override
public Integer userLogout(HttpServletRequest request) {
request.getSession().removeAttribute(USER_LOGIN_STATE);
// TODO: 先暂时返回 1,后期再做修改
return 1;
}
前端用户退出,在 /components/RightContent/AvatarDropdown.tsx
文件中找到 loginOut
函数,其中调用了 outLogin
接口,进行修改:
/** 退出登录接口 POST /api/user/logout */
export async function outLogin(options?: { [key: string]: any }) {
return request<Record<string, any>>('/api/user/logout', {
method: 'POST',
...(options || {}),
});
}
后端优化
通用返回对象
目的:给对象补充一些信息,告诉前端这个请求在业务层面上是成功还是失败。
自定义错误码(200、404、500、502、503),返回类支持返回正常和错误
为了能够更加精准知道报错的信息,一般格式为:
{
"code": "string",
"data": {
"id": "",
...
},
"msg": ""
}
封装全局异常处理器
- 定义业务异常类
相对于 java 的异常类,支持更多字段
自定义构造函数,更灵活 / 快捷的设置字段
- 编写全局异常处理器
- 作用:
捕获代码中所有的异常,内部消化,让前端得到更详细的业务报错 / 信息
同时屏蔽掉项目框架本身的异常(不暴露服务器内部状态)
集中处理,比如记录日志
实现:
Spring AOP:在调用方法前后进行额外的处理
- todo:全局请求日志和登录校验