我正在尝试使用像@PreAuthorize和@Secured这样的spring安全注释,但是我希望评估一个不在某个角色上的用户,而是他们是否拥有某个公司特定实体的权限。在我的控制器中,我收到一个包含firmId作为参数的http请求,我想确保该用户获得该公司的许可。这是否可以使用当前的弹簧安全注释?我正在寻找一个优雅的解决方案,我一直在寻找自定义约束验证器作为jsr303规范的一部分。方法标题如下。
public ModelAndView getSessionsJson(HttpServletRequest request,
HttpServletResponse response) throws ServletRequestBindingException {}
答案 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 annotations与ACL module结合使用。当然,在您需要设置ACL DB schema并为每个公司对象准备ACL权限之前。