使用自定义弹簧安全注释

时间:2013-05-29 15:47:18

标签: spring spring-mvc spring-security spring-3

我正在尝试使用像@PreAuthorize和@Secured这样的spring安全注释,但是我希望评估一个不在某个角色上的用户,而是他们是否拥有某个公司特定实体的权限。在我的控制器中,我收到一个包含firmId作为参数的http请求,我想确保该用户获得该公司的许可。这是否可以使用当前的弹簧安全注释?我正在寻找一个优雅的解决方案,我一直在寻找自定义约束验证器作为jsr303规范的一部分。方法标题如下。

public ModelAndView getSessionsJson(HttpServletRequest request,
  HttpServletResponse response) throws ServletRequestBindingException {}

1 个答案:

答案 0 :(得分:2)

我认为你可以这样做:

public ModelAndView getSessionsJson(HttpServletRequest request, HttpServletResponse response) throws ServletRequestBindingException { 
    Integer firmId = getFirmId(request);
    Firm firm = getFirmById(firmId);
    doSomeBusinessLogic(firm);
    .....
}

@PreAuthorize("hasPermission(#firm, 'admin')")
public void doSomeBusinessLogic(Firm firm) {
     ....
}

....

pre and post annotationsACL module结合使用。当然,在您需要设置ACL DB schema并为每个公司对象准备ACL权限之前。