Skip to content

Latest commit

 

History

History
51 lines (41 loc) · 1.98 KB

README.md

File metadata and controls

51 lines (41 loc) · 1.98 KB

项目介绍

功能概述

  • 登录
  • 注册
  • 用户功能
    • 查询个人信息
    • 更改个人信息
    • 注销用户并删除留言
  • 留言功能
    • 根据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继承这个父类,使代码更优雅