【发布时间】:2015-07-13 09:26:17
【问题描述】:
我有一个提供通用方法(GET、PUT、POST、DELETE)的基本 REST 控制器。
然后特定的控制器继承这些方法并使用它们或覆盖它们。当这样的子类控制器覆盖继承的控制器方法时,我有时需要添加例如@PreAuthorize("hasAnyRole('ROLE_ADMIN')") 以限制对某些安全角色的访问。
但是,现在我有另一个子类控制器,我需要只允许访问 GET 继承的方法。所有其他继承的方法(PUT、POST、DELETE)都应该被绝对禁止。
我尝试用空的@PreAuthorize 覆盖 DELETE:
@PreAuthorize
@Override
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ResponseBody
public void removeResource(@PathVariable("id") final Long id, final Principal principal) throws UnknownResourceException {
// Deny access to everyone
}
但是,没有值,它不是有效的注释。
有解决这个问题的常用模式吗?
【问题讨论】:
标签: spring security inheritance controller