我正在尝试在控制器类上获取@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”和“ ”的用户才能访问bar()。
我知道我可以使用
@PreAuthorized("hasRole('CLASS_LEVEL_ROLE') and hasRole('METHOD_LEVEL_ROLE')")
但是我有一些控制器,其中所有端点都必须具有相同的'CLASS_LEVEL_ROLE'
,并且具有通用类注释会更方便。
答案 0 :(得分:0)
@PreAuthorize允许类级别的注释。它的工作方式是,如果存在方法级别的注释,它将覆盖类级别的注释。您不能两者兼而有之。因此,当不存在方法级别的注释时,类级别的注释可以被视为后备。