GWT请求工厂的ACL

时间:2013-06-10 15:38:48

标签: java java-ee gwt httprequest requestfactory

我想将ACL应用于通过我的请求工厂的所有请求。因此,我重写了RequestFactoryServlet及其doPost() - Methode。现在我可以从会话中获取用户,检查他是否已登录等等。 但我也想检查他的权利,只允许用户调用特定的方法。因此,例如,只允许管理员用户调用将数据写入数据库的方法。

现在我的问题:

  1. 重写ReqeustFactoryServlet的方法是正确的吗?
  2. 如何找出RequestFactoryServerlet中调用的方法?有一种方法可以从请求中读取某些内容:String jsonRequestString = RPCServletUtils.readContent(request, JSON_CONTENT_TYPE, JSON_CHARSET);但它只提供了一个非常神秘的字符串。
  3. 我的代码看起来像这样:

    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);
        }
    }
    

1 个答案:

答案 0 :(得分:1)

解决方案是使用RequestFactoryServlet创建标准ServiceLayerDecorator

ServiceLayerDecorator中,您可以覆盖invoke方法。

http://google-web-toolkit.googlecode.com/svn/javadoc/2.2/com/google/gwt/requestfactory/server/ServiceLayerDecorator.html

但是我更喜欢直接在业务对象中执行ACL。