这行代码用来判断已登陆用户是否具有某权限
subject.isPermitted(permission.getPermission());
假设登陆用户已有权限:system
我们需要判断的权限: system:role:add
问题在于,此时shiro会判断用户具有system:role:add权限。
通过单步跟踪找到:
WildcardPermission.implies(Permission p)方法。
public boolean implies(Permission p) { // By default only supports comparisons with other WildcardPermissions if (!(p instanceof WildcardPermission)) { return false; } WildcardPermission wp = (WildcardPermission) p; List<Set<String>> otherParts = wp.getParts(); int i = 0; for (Set<String> otherPart : otherParts) { // If th