以下两行的行为是否相同?
@PreAuthorize("hasPermission(#task, 'MANAGER')
@PreAuthorize("hasPermission(#task, 'manager')
此外,权限常量在CustomPermission.java
中定义如下 public static final Permission MANAGER = new CustomPermission(1<<7,'M');
答案 0 :(得分:1)
权限参数是否区分大小写?嗯,是的,不。如果权限是大写String
并且您输入了小写权限,则它将起作用。然而,相反的结果却不胜一筹。
我检查了Spring的源代码。 AclPermissionEvaluator
是PermissionEvaluator
的默认实现,它是处理hasPermission()
例程的接口。它首先尝试从原始给定的String
中查找权限。如果找不到,则会再次尝试拨打toUpperCase()
。
亲自看看:
if (permission instanceof String) {
String permString = (String) permission;
Permission p;
try {
p = permissionFactory.buildFromName(permString);
}
catch (IllegalArgumentException notfound) {
p = permissionFactory.buildFromName(permString.toUpperCase());
}
if (p != null) {
return Arrays.asList(p);
}
}
参考: