[英]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.