java - 将类级别 @PreAuthorized 注释与方法级别 @PreAuthorzied 注释一起使用

标签 java spring annotations spring-security-oauth2

我试图在 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/

相关文章:

spring - 检测到循环@Import

java - Spring 从 JBoss 上下文加载 PropertySourcesPlaceholderConfigurer

Javassist:将 CtMethod 转换为 java.lang.reflect.Method

java - 多层在weblogic服务器JNDI查找中意味着什么

java - 使用 AsyncTask 和重启方法

java - Spring Security SAML - 如何配置客户端身份验证?

Java:如何简化复杂的注解

java - Spring注解与xml混合问题

java - 鼠标悬停在 safari、selenium 网络驱动程序中不起作用

java - 从数据库存储过程生成类的工具