我正在尝试使用 @PreAuthorize 但需要将其配置为使不同的环境具有不同的访问权限,但是当我尝试使用 @PreAuthorize("hasAuthority(#bean)") 时,没有任何内容被读取到权限中。
我试过使用#bean 和@bean,但都没有用,但如果我有一个硬编码字符串,它就可以正常工作。当使用#bean 时,没有任何内容被传入,而当使用@bean 时,我得到 No bean resolver registered in the context to resolve access to bean 'readRole'
@Bean
public String readRole() {
return "Domain Users";
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(@readRole)")
public @interface UserCanSeeRestricted { }
然后在我的休息控制器中:
@SecurityConfigExample.UserCanSeeRestricted
@GetMapping("/all")
public Collection<Office> getAllOffices()
{
return officeService.getAll();
}
我希望能够使用 readRole 根据环境返回不同的组,并让 @PreAuthorize 读取它们
我尝试了什么:
public class SecurityConfig {
public String readRole = "Domain Users";
}
@Bean
public SecurityConfig readRole() {
return new SecurityConfig();
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(@readRole.readRole)")
public @interface UserCanSeeRestricted { }
--- 第二次更新:
public class SecurityConfig {
public String readRole() {
return "Domain Users";
}
}
@Bean
public SecurityConfig readRole() {
return new SecurityConfig();
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(@readRole.readRole())")
public @interface UserCanSeeRestricted { }
我试着更换
@SecurityConfigExample.UserCanSeeRestricted
和
@PreAuthorize("hasAuthority(@readRole.readRole())")
但它没有用
波斯汪
相关分类