[英]Is the permission parameter case-sensitive when using with hasPermission in spring security?
以下两行的行为是否相同?
@PreAuthorize("hasPermission(#task, 'MANAGER')
@PreAuthorize("hasPermission(#task, 'manager')
另外,权限常量在CustomPermission.java中定义如下
public static final Permission MANAGER = new CustomPermission(1<<7,'M');
权限参数是否区分大小写? 好,是的,不是。 如果许可权是大写的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);
}
}
参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.