尝试在 CQ 中转发请求时访问被拒绝

Access Denied when trying to forward the request in CQ

全部,我正在尝试使用 assestManager 在 CQ 的 dam 中上传文件,然后尝试在元数据中设置值。然后我一个一个地检索所有数据并存储在列表中,并将其设置为请求对象并使用 'rd.forward(request, response);' 将其传递给新的 jsp 页面,但我收到错误消息:

javax.jcr.AccessDeniedException: Access denied.

即使已授予所有访问权限。

代码:-

String redirect = request.getParameter(":redirect"); //content/nextgen/marine/podupload.html
RequestDispatcher rd = request.getRequestDispatcher(redirect);
rd.forward(request, response); // throws me error as access denied

我假设您最初的请求是 POST?

如果是这样,请尝试以下操作:

SlingHttpServletRequest newRequest = new SlingHttpServletRequestWrapper(request) {
    public String getMethod() {
        return "GET";
    }
};

newRequest.getRequestDispatcher("/content/nextgen/marine/podupload.html")
          .forward(newRequest, response);

如果这是您尝试转发的 GET 请求,那么这是一个权限问题。如果这是一个 POS 或 PUT 请求,那么您将需要一个 SlingHttpServletRequestWrapper 来包装和修改您的请求作为 GET 请求转发。

这仅仅是因为 sling 无法转发 POST 请求。