是否可以为所有资源设置默认 ROLE_ADMIN
,然后在指定资源上用 ROLE_USER
或 IS_AUTHENTICATED_ANONYMOUSLY
覆盖它?
目前我为管理员用户使用@Secured({"ROLE_ADMIN"})
(例如获取所有用户列表),@Secured({"ROLE_USER", "ROLE_ADMIN"})
用于普通用户(例如获取他们的订单列表)和 @Secured("IS_AUTHENTICATED_ANONYMOUSLY")
用于匿名用户(例如获取列表产品或登录)。
现在我需要将 ROLE_ADMIN
设置为所有资源的默认必需角色,然后根据资源要求覆盖它。
最佳答案
@RestController
@RequestMapping(value = "test", produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
public class TestResource {
@PreAuthorize("hasAuthority('ROLE_USER')")
@RequestMapping(value = "somePath", produces = MediaType.APPLICATION_JSON_VALUE)
public Object apiEndpoint() {return null;}
}
在 Controller 顶部放置一个默认的@PreAuthorize
。它将适用于所有公共(public)方法。如果你想覆盖:把另一个 @PreAuthorize
放在方法上面。
关于java - spring boot 中所有资源都需要设置默认角色吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53427557/