java - GWT 请求工厂的 ACL

标签 java jakarta-ee gwt httprequest requestfactory

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

现在我的问题:

  1. 重写 ReqeustFactoryServlet 的方法是否正确?
  2. 如何查明在 RequestFactoryServerlet 中调用了哪个方法?有一个方法可以从请求中读取某些内容: 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);
    }
}

最佳答案

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

在您的ServiceLayerDecorator中,您可以重写invoke方法。

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

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

关于java - GWT 请求工厂的 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027662/

相关文章:

java - 我怎样才能有一个接受类型为 "my type"的参数的抽象方法?

Java 存储过程无法在 DB2/400 V6R1 上运行 - 它曾经在 V5R4 上运行

java - @OneToMany关系: "one" id not persisted

eclipse - GWT Maven - 在开发模式下运行时 webapp 文件被删除

css - GWT UiBinder - 基于网格的 css 样式

java - 当我在 eclipse DevMode 和 Tomcat 7 服务器上启动 gwt-rpc 项目时,URL 不同,所以我遇到了 PayPal 问题

Java 8流将一个数组中的对象替换为另一个数组中的对象

java - 如何在 Mac 操作系统中系统启动后自动启动应用程序

java.lang.ClassNotFoundException : org. quartz .DisallowConcurrentExecution

hibernate - 如何以编程方式检索持久性单元使用的数据源