我试图在 Controller 类上获取 @PreAuthorized 注释,以便与同一类的方法(端点)上的 @PreAuthorized 注释结合使用。 该类的概述如下所示:
@RestController
@RequestMapping("/api")
@PreAuthorized("hasRole('CLASS_LEVEL_ROLE')")
public class foo {
@GetMapping("/test")
@PreAuthorized("hasRole('METHOD_LEVEL_ROLE')")
@Timed
public ResponseEntity<String> bar() {
return ResponseEntity.ok().body("entered method successfully");
}
}
目前所发生的情况仅考虑方法级别注释。
理想情况下,只有角色“CLASS_LEVEL_ROLE”和“METHOD_LEVEL_ROLE”的用户才被允许访问 bar()。
我知道我可以使用
@PreAuthorized("hasRole('CLASS_LEVEL_ROLE') 和 hasRole('METHOD_LEVEL_ROLE')")
但我有一些 Controller ,其中所有端点都必须具有相同的'CLASS_LEVEL_ROLE'
,并且使用通用类注释会更方便。
最佳答案
@PreAuthorize 允许类级别注释。它应该工作的方式是,如果存在方法级别注释,它将覆盖类级别注释。你不能将两者结合起来。因此,当方法级别注释不存在时,类级别注释可以被视为后备。
关于java - 将类级别 @PreAuthorized 注释与方法级别 @PreAuthorzied 注释一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356107/