我想将ACL应用于通过我的请求工厂的所有请求。因此,我重写了RequestFactoryServlet及其doPost() - Methode。现在我可以从会话中获取用户,检查他是否已登录等等。 但我也想检查他的权利,只允许用户调用特定的方法。因此,例如,只允许管理员用户调用将数据写入数据库的方法。
现在我的问题:
String jsonRequestString = RPCServletUtils.readContent(request, JSON_CONTENT_TYPE, JSON_CHARSET);
但它只提供了一个非常神秘的字符串。我的代码看起来像这样:
public class MyRequestFactoryServlet extends RequestFactoryServlet {
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
HttpSession session = getThreadLocalRequest().getSession();
User user = (User)session.getAttribute("user");
// check rights for user and only allow some methods
super.doPost(request, response);
}
}
答案 0 :(得分:1)
解决方案是使用RequestFactoryServlet
创建标准ServiceLayerDecorator
。
在ServiceLayerDecorator
中,您可以覆盖invoke
方法。
但是我更喜欢直接在业务对象中执行ACL。