在shiro配置中我们经常会配置系统中一些接口的访问权限,当我们超过12条访问权限的时候,后续的配置就会不生效,这时候我们需要处理,最核心的思想是过滤规则接收的map集合定义的时候不要使用HashMap,而是使用LinkedHashMap。
目前我们配置过滤规则有两种方式
第一种是将过滤规则定义在配置文件中,如下:
permission-config:
perms:
- key: /---/----
value: anon
- key: /---/----
value: anon
- key: /---/----
value: anon
- key: /---/----
value: anon
- key: /---/----
value: anon
- key: /----/-----
value: anon
- key: /----/----
value: anon
- key: /**
value: jwt
这种配置的时候在动态配置注入的时候将获取配置文件中过滤规则的map定义为LinkedHashMap,如图所示第一行的map定义
第二种是我们将过滤规则定义在代码中,这时候的定义方式如下图所示
总结:其实如最开始所说,我们最核心的思想就是将所有的过滤规则放在LinkedHashMap中,而不是HashMap中,这样就能解决我们shiro过滤条件太多不生效的问题。