使用RequiresPermissions注解进行权限拦截项目规定根据功能多级编码
例:A菜单下的B管理功能中的C按钮权限编码为[A:B:C]
使用后发现只要拥有权限编码[A:B]
权限编码[A:B:C],[A:B:D],[A:B:E]权限校验通过
源码如下:
Debug查看源码发现Shrio中的鉴权会根据(: ,)切割,切割顺序为先使用(:)切割后得到一个list
遍历list根据(,)切割。
对比权限时根据切割后的list进行集合包含的判断,包含返回true。
源码如下:
如何避免问题:
这里发现这个问题后使用了(_)下划线代替(:)权限检验正常。
只要编码中不带(: , *)即可。
ps:(: , *)为英文符号