# 内置拦截器

系统默认的内置拦截器目前有三个,分别是日志记录拦截器,License拦截器,签名拦截器

拦截器的所有配置项位于system.filter下。

# 日志记录拦截器

日志记录拦截器用于记录所有非Get请求,意味着可能造成数据变动的所有请求都会被记录到请求日志表(sys_log_access)中。

相关配置

system:
  filter:
    httpTraceLog:
      # true表示开启,false表示关闭
      enable: true
      # 开启相关日志
      log: true
1
2
3
4
5
6
7

日志记录可在菜单系统维护 > 日志管理 > 请求日志中进行查看

# License拦截器

用于版权申明和限制使用方的使用边界。

提示

License的具体实现逻辑,后期会改版。

当前版本

相关配置

system:
  filter:
    license:
      # true表示开启,false表示关闭
      enable: true
      # 开启相关日志
      log: true
license:
  # 用于license解密的密钥
  secret: gxjgpt
  licenceId: ecac2288-6c0c-4a44-92a9-9b0951438a1f
  # license白名单
  paths:
    - /api/v1/system/logout
    - /api/v1/system/login
    - /api/v1/system/cas
    - /api/v1/system/cas/**/token
    - /api/v1/login/byPassword
    - /api/v1/login/byVerifyCode
    - /api/v1/license
    - /api/v1/login/getImageVerifyCode
    - /api/v1/sysMenus/tree
    - /api/v1/login/byImageVerifyCode
    - /api/v1/login/loginFromNbrc
    - /api/v1/baseRegInfo/getRole
    - /api/v1/system/userInfo
    - /api/v1/sysUsers/admin/portrait
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

许可证生成

只需改动软件英文名称,软件中文名称,有效月份即可

如果是之前的许可证过期了,则需要将licenceId设置为之前的,继续进行生成。

public static void main(String[] args) {
    //软件英文名称
    String secretLocal = "gxjgpt";
    //软件中文名称
    String productName = "共享加工平台软件";
    //随机生成licenseId
    String licenceId = UUID.randomUUID().toString();
    //许可证所属人
    String licenceName = "浙江坤谷智能科技有限公司";
    //许可证等级
    String licenceLevel = "premrum";
    //许可证类型
    String licenceType = "offline";
    //有效月份
    int month = 3;

    Map<String, Object> claims = new HashMap<>();
    claims.put("productName", productName);
    claims.put("licenceId", licenceId);
    claims.put("licenceName", licenceName);
    claims.put("licenceLevel", licenceLevel);
    claims.put("licenceType", licenceType);

    LocalDateTime date = LocalDateTime.now();
    //当前时间戳
    long nowDate = date.toInstant(ZoneOffset.of("+8")).toEpochMilli();
    date = date.plusMonths(month);
    //到期时间戳
    long expiration = date.toInstant(ZoneOffset.of("+8")).toEpochMilli();
    claims.put("expirationTime", expiration);
    String jwt = JwtTokenUtils.createJwt(secretLocal, productName, claims, expiration - nowDate);

    System.out.println("许可证相关信息已生成============>");
    System.out.println("secret: " + secretLocal);
    System.out.println("licenceId: " + licenceId);
    System.out.println("许可证: " + jwt);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# 签名拦截器

用于接口安全规范,防止请求参数篡改重放攻击, 并校验时效性

目前knife4j不支持前端签名生成,所以建议在开发环境中,将其关闭。

system:
  filter:
    sign:
      # true表示开启,false表示关闭
      enable: true
      # 开启相关日志
      log: true
1
2
3
4
5
6
7
最后一次更新: 2021-6-2 16:28:35