gpt4 book ai didi

java - 在 Spring Security 中与 hasPermission 一起使用时,权限参数是否区分大小写?

转载 作者:行者123 更新时间:2023-12-01 11:22:17 24 4
gpt4 key购买 nike

下面两行的行为是否相同?

@PreAuthorize("hasPermission(#task, 'MANAGER')

@PreAuthorize("hasPermission(#task, 'manager')

此外,权限常量在 CustomPermission.java 中定义如下

 public static final Permission MANAGER    = new CustomPermission(1<<7,'M');

最佳答案

权限参数是否区分大小写?嗯,是的,也不是。如果权限是大写的String并且您输入小写的权限,它将起作用。但相反的情况则不会。

我检查了Spring的源代码。 AclPermissionEvaluatorPermissionEvaluator 的默认实现,它是处理hasPermission() 例程的接口(interface)。它首先尝试从原始给定的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);
}

}
<小时/>

引用:

https://github.com/spring-projects/spring-security/blob/7b4a37f27e4ba7045bd63656e49ee0d5ee381ce5/acl/src/main/java/org/springframework/security/acls/AclPermissionEvaluator.java

关于java - 在 Spring Security 中与 hasPermission 一起使用时,权限参数是否区分大小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com