【问题标题】:Annotation based securing endpoint [closed]基于注释的安全端点[关闭]
【发布时间】:2022-01-29 10:58:44
【问题描述】:

我正在尝试保护 api 控制器功能本身的安全性,以便如果特定用户具有特定角色并允许该人调用该端点,否则响应为 403。

@PostMapping("/user")
**@havingRole("ADMIN","LEADER")** <- my custom annotation.
public ResponseEntity<User> createUser(User user){
....
}

【问题讨论】:

    标签: spring-boot spring-security


    【解决方案1】:

    您可以根据提供的 Spring 功能创建自己的注解。按照你的例子:

    @Inherited
    @Retention(RUNTIME)
    @Target({METHOD, TYPE})
    @PreAuthorize("hasAnyRole('ADMIN', 'LEADER')")
    public @interface AdminOrLeaderRoleRequired {
    }
    

    现在您可以在个别方法上使用它:

    @PostMapping("/user")
    @AdminOrLeaderRoleRequired
    public ResponseEntity<User> createUser(User user) {
       ...
    } 
    

    或者在类定义中:

    @RestController
    @RequestMapping("/user")
    @AdminOrLeaderRoleRequired
    public class UserController {
       ...
    }
    

    内部方法可以用其特定的授权规则覆盖它。

    【讨论】:

      【解决方案2】:

      使用注解@PreAuthorize("hasRole('Role_Admin')")

      【讨论】:

        猜你喜欢
        • 2013-03-23
        • 2010-09-24
        • 2011-12-04
        • 1970-01-01
        • 2010-09-15
        • 2011-05-16
        • 1970-01-01
        • 2014-09-11
        相关资源
        最近更新 更多