我试图在类型级别上使用@PreAuthorize
注释来保护控制器,并尝试通过使用不同的@PreAuthorize
注释某些方法来覆盖该行为。然而,问题在于Spring首先评估方法注释(授予访问权限),然后评估类别注释(拒绝访问)。Spring Security的类型级@PreAuthorize不能在方法级别上覆盖
有什么方法可以颠倒这个顺序吗?我还没弄明白。
编辑:
在方法层面上,我要授予访问权限,只非注册用户:
@PreAuthorize("isAnonymous()")
@RequestMapping(value = "/create", method = RequestMethod.GET)
public String renderCreateEntity(ModelMap model) {
return userService.renderCreateEntity(model);
}
然而,对于这个控制器的标准,应该是只允许充分验证的用户:
@Controller
@RequestMapping(value = "/user")
@PreAuthorize("isFullyAuthenticated()")
public class UserController { [...] }
当调试步进通过应用程序,我看到isAnonymous()
首先计算,然后isFullyAuthenticated()
从而导致在授予访问权限并立即拒绝访问权限。
您使用的是哪个版本的Spring Security? – beny23
一切春天是3.0.5.RELEASE – chzbrgla