【问题标题】:Authenticate Operation Before Each Action In Spring Boot Effectively在 Spring Boot 中有效地在每个操作之前对操作进行身份验证
【发布时间】:2019-06-01 17:15:54
【问题描述】:

我有一个如下所示的代码块。对于每种方法,我将其称为操作身份验证。是否可以有效地处理注释或其他事情?

@GetMapping
public ResponseEntity getAction(@PrincipalUser user, Long actionId)
{
   repository.checkUserForAction(user.getId(), actionId);
   implement actions...
   return service call;
}
@PostMapping
public ResponseEntity addAction(@PrincipalUser user)
{
   repository.checkUserForAction(user.getId());
   implement actions...
   return service call;
}
@DeleteMapping
public ResponseEntity addAction(@PrincipalUser user, Long actionId)
{
   repository.checkUserForAction(user.getId(), actionId);
   implement actions... 
   return service call;
}

实际上,在这里我的另一个问题是我每次都调用存储库方法,我知道这不是一种有效的方法。

【问题讨论】:

    标签: spring-boot authentication annotations


    【解决方案1】:

    您可以使用Spring Security@PreAuthorize 注释。

    例子:

    @PreAuthorize("@authorizationService.check(#actionId)")
    @DeleteMapping
    public ResponseEntity performAction(Long actionId) {
    implement actions...
    }
    

    并且在authorizationService内部封装了授权逻辑,而且authorizationService必须是一个bean并且必须设置@EnableGlobalMethodSecurity(prePostEnabled = true)

    【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多