shiro权限校验源码分析

开门见山

如角色超级管理员有权限  user,但是没有 user:insert,user:edit权限

可见源码,shiro会通过":"把用户的权限字符串split,如:user:insert,得到List<String>  ==  [user,insert],如下图

shiro权限校验源码分析

这里的perms代表的是用户的所有权限,为经过split之后的权限,permission为当前要校验的权限,如下图

shiro权限校验源码分析

校验权限时,比如校验的是user:insert,用户拥有权限user,for循环第一层,user比对user,通过,执行i++,for循环第二层,由于getParts().getsize -1 < i 条件成立(用户权限user,split之后,只有user这个字符串),所以返回true,权限校验通过

说明了,如果用户user权限,user下的其它权限,如:user:insert,user:edit  都会拥有,如下图

shiro权限校验源码分析