- 登录
- 注册
- 用户功能
- 查询个人信息
- 更改个人信息
- 注销用户并删除留言
- 留言功能
- 根据id查询留言及其所有回复
- 根据uid查询该用户所有留言
- 增加留言
- 删除留言
- 更改留言信息
- main
- config:配置器,注册了拦截器
- controller:控制层
- exception:自定义异常
- interceptor:拦截器,用以验证和更新令牌
- mapper:持久层接口
- pojo:实体类
- service:服务层
- utils:工具类,生成令牌和对部分接口进行额外的权限校验
- resource
- mapper:mybatis的sql映射文件
- SpringBoot集合框架
- MySQL
- Mybatis
- JWT
- JUnit测试
- Git版本控制
- 令牌更新:登陆时颁发了两个令牌,token和refresh_token,token用以正常的登陆校验,有效期为15分钟,refresh_token用以更新token,有效期为2天。token泄露后会很快失效,一定程度上保证了用户登录的安全性。
- 额外的身份校验:在用户功能中,在更改信息和注册用户前,拦截器对请求进行额外验证,校验token有效载荷中的用户id是否与想要更改或删除的用户id相同;在留言功能中,校验token有效载荷中的用户id是否是留言的发送者。保证了当前登陆用户有足够的权限。
- 注销用户时,开启事务,在成功删除用户和其所有留言后,才成功提交,保证数据操作的安全性
- 根据id查询留言时,递归查询了这条留言下面的所有回复及其子回复。
- 对于登录校验的业务,代码量随着开发会变得非常庞大,不利于维护,在开发中期及时对其进行解耦到uitls中,方便后期维护和增加功能
- 控制层有非常多的重复代码,我选择将其封装成函数写在ObjectController中,所有Controller继承这个父类,使代码更优雅