如何覆盖SDR @RepositoryRestController根@PreAuthorize

时间:2018-10-09 15:46:07

标签: java spring spring-data-rest

我正在使用Spring Boot 2.x,Spring Data REST,Hibernate。

我有一个这样的Spring控制器:

@RepositoryRestController
@PreAuthorize("isAuthenticated()")
public class AgentController {

    @PreAuthorize("permitAll()")
    @PostMapping(path = "/agents/verifyEmail")
    public ResponseEntity<?> verifyEmail(@RequestParam(required = true) String token, @RequestParam(required = true) String tenantId, Locale locale) {
        SecurityUtils.runAs("system", Role.ROLE_ADMIN);
        return ResponseEntity.ok(verificationTokenService.verifyEmail(token, tenantId));
    }

我认为方法verifyEmail中的注释@PreAuthorize("permitAll()")会覆盖根@PreAuthorize("isAuthenticated()"),但事实并非如此。 如果要我的REST调用到达该方法,则必须删除根注释。

应该是这样吗?我只想打开几种方法,我认为可以使用@PreAuthorize("isAuthenticated()")安全地保护整个控制器,并仅对需要公开的几种方法添加例外。

我应该为公共方法创建一个新的特定控制器吗?

0 个答案:

没有答案