智能云端素材库后端-用户模块

库表设计

  • 给唯一值添加唯一键,(用户账号),来防止重复。
  • 给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 拦截器配置,添加分页插件。