我正在尝试使用@PreAuthorize
注解来保护一个控制器,并尝试通过对某些方法使用不同的@PreAuthorize
来覆盖该行为。然而问题在于,Spring首先评估方法注解(授权访问),然后再评估类注解(拒绝访问),导致无法实现我的目标。
是否有办法改变这个顺序呢?我还没有想出来。
编辑:
在方法级别上,我想允许未注册用户访问:
@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()
,从而导致授予访问权限,接着立即再次拒绝访问。