• 雨燕权限管理后端技术总结


    1,入参校检

    • 入参校检我觉得分两种,一种是validtion在前面就设置了他的格式和not null这种,鉴于我在dto使用vaild的时候被峰哥说了dto只能用了传输,那只能在web项目添加vaild,platform只部署内网的时候,dto暂时认为他是安全的
      
      
    • 还有一种就是不使用vaild校检,没有权限添加的字段在程序中set null,还有其他字段即使在前端控制了,有人可能用http工具进行攻击,所以存在乱七八糟的设值情况,所以要在关键字段set null,然后由数据库添加默认值,(注意string和int,和timestamp都有

      默认值),date要在程序中处理,在有权限的token的情况下,它可以设置任何值,毕竟他是有权限的

    • 最新情报,框架不能使用@Valid注解,在专用dto上可以应付必不须值注入的情况,但不能保证全体dto都有值,所以dto是必须有的字段要自己做出null检查,dto上非必须的自己想好
    • 在复用dto上,多余出来的字段,如果是必不需要的,自己要做set null操作

    2,整个流程,在web的biz层发生form和dto的方法,dto想转成能看到格式,比如base64,就在这里,在platform的biz层发生dto和entity的转换方法,数据库要存进相关int,dto的enum转成int,空日期设置,在这里进行

    3,文件目录结构

     4,评审后的感悟+后来测试(不能使用@valid jsr 303验证

    • form对象需要setter 和 getter方法(可以使用Lombok
    • dto对象需要无参构造函数(可以使用Lombok
    • 有异常直接抛throw new BizException("0","test0"),如果platform有提交异常,throw new BizException("1","test1"),会提前抛出platform的异常

    5,额外表

    • 添加额外表的东西的时候,不要根据前端是否传来额外表的主键来判断插入或者更新,要传入唯一的主表id,在数据库查询是否有记录来判断插入还是更新

    6,代码写法

    • 在一个if都有差不多的相同条件,想想可否抽象出来,可否使用continue来提前跳过
    • 尽量 不用flag来判断,有的东西写两次就两次
    • 在查询数据库时,想想查出来的对象是否能复用,比如要根据id查出来一个,或者他就是创始人的id,就不用重查一遍
    • 在判空list的时候,不清楚时候返回一个空list还是null,都尽量做一次 != null 判断和 is.empty方法判断
    • 在用if来返回值的时候,把代码量少的放在if里面
  • 相关阅读:
    进程间通迅之消息队列
    进程间通讯之共享内存
    标准块CP功能实现
    标准字符cp功能
    文件cp功能
    jest 的 coverage 提示 unknown 的解决方案
    js中的相等
    getBoundingClientRect 和 requestAnimFrame 的polyfill
    设计模式(4): 给组件实现单独的store
    Vue项目移动端滚动穿透问题
  • 原文地址:https://www.cnblogs.com/vhyc/p/10570669.html
Copyright © 2020-2023  润新知