用户中心项目总结
总结一些项目中学到的业务逻辑等知识
表
这里就一个用户表
注册功能逻辑
- 用户在前端输入账户和密码、以及校验码(todo)
- 校验用户的账户、密码、校验密码是否符合要求
- 账户不小于 4 位(自己扩展校验)
- 密码不小于 8 位
- 账户不能重复
- 账户不包含特殊字符
- 密码和校验密码相同
- 对密码进行加密(千万不能明文存储到数据库中)
- 向数据库插入用户数据
返回值 boolean 或者 long
校验逻辑使用第三方库 commons-lang3 或者hutools等 这样直接调用,写起来方便
登录功能逻辑
登录接口
- 接收参数:用户账户、密码
- 请求类型:POST
请求参数很长时不建议用 GET
- 请求体:JSON格式的数据
- 返回值:用户信息(脱敏)
逻辑
- 校验用户账户和密码是否合法
- 非空
- 账户不小于 4 位
- 密码不小于 8 位
- 账户不包含特殊字符
- 校验密码是否输入正确,要和数据库中的密文密码对比
- 用户脱敏,隐藏敏感信息,防止数据库中的字段泄露
- 我们要记录用户的登录态(session),将其存到服务器上(用后端SpringBoot框架封装的服务器tomcat去记录)
- cookie
- 返回安全的脱敏后的用户信息
采用逻辑删除
yml
mybatis-plus:
global-config:
db-config:
logic-delete-field: isDelete # 全局逻辑删除字段名
logic-delete-value: 1 # 逻辑已删除值
logic-not-delete-value: 0 # 逻辑未删除值
User.Java中添加逻辑删除字段
java
import com.baomidou.mybatisplus.annotation.TableLogic;
public class User {
// 其他字段...
@TableLogic
private Integer isDelete;
}
登录态管理
Cookie 和 Session
- 连接服务器端后,得到一个 session 状态(匿名会话),返回给前端
- 登陆成功后,得到了登陆成功的 session ,并且给该 session 设置一些值(比如用户信息),返回给前端一个设置 cookie 的“命令”
- session ⇒ cookie
- 前端接收到后端的命令后,设置 cookie ,保存到浏览器内
- 前端再次请求后端的时候(相同的域名),在请求头中带上 cookie去请求
- 后端拿到前端传来的 cookie ,找到对应的 session
- 后端从 session 中可以取出基于该 session 存储的变量(用户的登陆信息、登录名)
:::details那么我们要用什么呢? UserService 与 UserServiceImpl 中添加 HttpServletRequest request 也就是使用request请求 :::
Java
// 4. 记录用户的登录态
request.getSession().setAttribute(USER_LOGIN_STATE, safetyUser);
Java
/**
* 用户登录态键
*/
String USER_LOGIN_STATE = "userLoginState";
登录态是一个常量,这里就是要记录一下
封装request请求
封装专门用来接收请求参数的对象 model.domain 包建立一个 request 包,新建 UserRegisterRequest.java 类
为什么要这么做呢
controller层倾向于请求参数本身的校验,最好不要涉及到业务逻辑本身 业务逻辑主要写在service层
用户管理功能
其实就是对用户进行增删改查
- 查询用户
- 允许根据用户名查询
- 删除用户
用户注销功能
需要返回什么参数?
查看登录时的逻辑,用户登陆成功,session 中保存了用户的登录态,反之,注销,移除登录态即可
用户校验
仅适用于用户可信的情况
先让用户自己填:2-5 位星球编号
- 后台补充对编号的校验
- 长度校验
- 唯一性校验
- 前端补充输入框,适配后端
后期拉取星球数据,定期清理违规用
后端代码优化
通用反馈对象
将之前所有的请求使用 BaseResponse 封装一下
自定义异常及错误代码
common 包下新建 ErrorCode.java