点击空白处退出提示
作品详情
该项目共分为五张表格,用户表、角色表、权限表、角色权限表、用户角色表,角色权限表和用户角色表属于前三 个表格的中间联查表格,负责进行逻辑外键交互。
该项目为前后端分离项目,在我们与负责前端的同事进行反复沟通确认后,指定好了项目整体的通用返回值类型, 所有 Service 层的方法均使用通用返回值类型并返回给 DTO 层。
登陆注册功能,新用户注册我们使用了 BCrypt 密码加密算法,将用户的加密密码存放至数据库,在登陆时先通过 用户名查询对应的用户信息,再数据库中将查出来的用户加密密码与用户前台输入的明文密码进行解密比对,验证通 过方可成功登陆。
整个项目的功能实现的前提是必须要验证对应的用户 Token,当用户登陆成功后会自动生成对应的 Token,这个 Token 由三部分组成,头部、载荷、签名,将生成的 Token 通过 RedisTemplate 存放到 Redis 缓存中,Redis 中键 是生成的 Token,值是 Token 解密后的字符串,并且设置好了键的超时时间。
对于 Controller 层,所有的操作,包括退出操作都需要先验证 Token 是否正确,通过前台传过来的 Token 在 Redis 中查询,查出来的对应的就是 Redis 对应的值,这个值就是解密后的 Token 字符串,通过这个 Redis 中的 Token 去和 Token 工具类中的解密方法的结果进行比对,如果匹配则可以进行下一步操作。
当成功进行了下一步操作以后,会将原始的 Token 在 Redis 中移除,重新生成一个新的 Token 放入 Redis 中,进 一步提高了项目的安全性,防止一些使用者恶意的使用 Token 执行非法的操作。
同时对于用户可以执行的操作权限,因为该项目没有启用 Spring Security,我们通过自己写的自定义注解配合一 个枚举类标注对应的操作权限,枚举类中包含三种权限,登陆和权限验证、不验证权限、都不验证,三种验证等级, 在自定义注解上面限制该注解只能用在方法上面,并指定了注解的存活范围为运行时保留,然后写一个工具类实现 HandlerInterceptor 接口,覆盖 preHandle 方法,在方法体中对上述三个注解真正赋予权限的意义。
对于历史数据查询,按照客户的需求需要进行过去 24 小时、过去 3 天、7 天的时间范围查询,该功能通过 SQL 语 句的 date_sub 函数算出当前时间具体过去 24 小时的所有数据,3 天和 7 天的功能以此类推,通过查询出的数据 JSON 数据量不同来区分在前台放置展示。
该项目系统会定期为客户自动生成或运维人员手动生成对应的 Excel 报表,我们通过 Apache 的 POI 来实现 Excel 表格文件生成的功能。
其余的基础功能类似于数据库的日常增删改查的工作均在项目初期时不断对接水质检测设备的厂商人员,了解检测 设备的检测颗粒度、检测频率及时间间隔等特性后,结合具体项目需求完成。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论