Summary of This Week _ 20220823

85 阅读2分钟

悟已往之不谏,知来者之可追

一周小结: 2022-8-15 ~ 2022-8-21

三省吾身

回顾上周的工作学习内容

工作任务

近期没有明确的项目开发任务,主要是平台的数据安全问题处理;

问题描述:大部分接口的请求参数类似当前登录的用户名 username,user_id,工号都是通过前端传递的(无力吐槽,不知道为什么会这么设计),后端也只是校验了 JWT-Token 自身的有效性,没有校验 token 和用户信息的一致性,所以存在接口数据越权的问题。

修复方案大致有三种:

  • 接口全部重构,不再使用前端的共通参数,接口通过 SecurityUtils.getSubject().getPrincipal() 相关的方法获取当前用户信息
  • 每个项目增加 AOP 拦截处理,校验接口参数和 Token 信息的一致性
  • 所有项目的共通依赖修改,通过拦截器校验接口参数和 Token 信息的一致性

最终确定的方案为,遗留系统采用第三种方式,同时支持配置开关,可选择性开启; 新的系统使用第一种,并完善相关的共通方法或者工具类。

在实际修改的过程中,还是遇到了很多问题,比如

  • 请求流只能读取一次,所以拦截器读取之后,SprinMVC 就会报错
  • 为什么请求流只能读取一次呢?
  • 按照网上提供的一些方案修改之后,并没有生效,根本原因是什么
  • ...

相关的问题准备梳理之后单独输出一篇完整的文档,这里先贴一下参考文档:

学习内容

学习方面,学习了一些设计模式,策略模式、责任链、代理+动态代理等。

不断巩固复习,并在工作中实践。

Next Week

有一个项目历时近一年下周终于要上线了,而且是入职后参与的第一个项目,也算是倾注了颇多心血,做好上线前的各种工作以及通宵的准备吧[doge];