2

我正在尝试使用 @PreAuthorize 和 @Secured 之类的弹簧安全注释,但我希望评估的不是角色,而是他们是否有权访问特定实体(在这种情况下为公司)。在我的控制器中,我收到一个包含firmId 作为参数的http 请求,我想确保该用户已获得该公司的许可。这可能使用当前的弹簧安全注释吗?我正在寻找一个优雅的解决方案,我一直在将自定义约束验证器视为 jsr303 规范的一部分。下面的方法头。

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

1 回答 1

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) {
     ....
}

....

结合ACL 模块使用pre 和 post 注释。当然,在您需要设置ACL DB 架构并为每个公司对象准备 ACL 权限之前。

于 2013-05-29T15:58:13.607 回答