智能云端素材库后端-用户模块
库表设计
- 给唯一值添加唯一键,(用户账号),来防止重复。
- 给userName添加索引。
数据访问层
连接并创建数据库表后,使用MyBatisX快速生成代码。注意移动后修改 mapper的xml文件中的包名。
此外将实体类的ID改为雪花算法生成,防止爬虫爬取。但是若以ID为索引,雪花算法会存在性能问题。
采用逻辑删除,方便恢复数据。
创建用户类型的枚举类。
用户注册
创建注册请求信息类。添加注册方法并实现。
注册方法中包括:
- 参数校验
- 账号是否重复
- 加密密码并尝试保存用户信息
用户登录
参数校验
查询用户
记录登录状态
request.getSession().setAttribute(USER_LOGIN_STATE, user);
获取当前登录用户
获取当前对话用户对象:
Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE);
判断用户登录状态
返回用户信息
返回用户信息时,可以进行数据脱敏,即去除用户信息类中的敏感信息(密码等),仅返回所需要的信息。
用户注销
移除session中的登录状态即可。
用户权限控制
使用SpringAOP+自定义权限校验注解
实现统一的接口拦截和权限校验。
首先在annotation
包下编写权限校验注解authCheck
,其中需要mustRole变量。
之后编写权限校验AOP,放在aop包下。采用环绕通知,环绕authCheck
注解。
对需要进行权限控制的接口添加注解。
用户管理
除了常规的CURD和数据脱敏外,需要注意分页功能。
使用Mybatis Plus时,需要独立按照分页插件。
此外,还需要在config包下新建全局JSON配置,将长整型转换为字符串,来解决JS的精度丢失问题。
分页功能
- 继承PageRequest类。
- 根据查询结果,和current与pageSize来获取分页列表
分页功能修复
引入插件依赖,引入mybatis-plus-bom。
在config包下新建 MyBatis Plus 拦截器配置,添加分页插件。