写入 JCR (JackRabbit) [Magnolia] 时出现 AccessDeniedException

AccessDeniedException when writing into JCR (JackRabbit) [Magnolia]

我为 geoIP 本地化写​​了一个请求过滤器。它的工作方式是我请求外部服务进行本地化,然后将信息写入 JCR,写入 caching/storage.

的专用工作区

在 author 实例上这有效,但在 public 实例上我经常收到 AccessDeniedException。我可能需要使用 JCR 进行身份验证,我也尝试过,使用 magnolia.properties 文件中的凭据:

magnolia.connection.jcr.userId = username
magnolia.connection.jcr.password = password

以及此验证码:

Session session = MgnlContext.getJCRSession(WORKSPACE_IP_ADDRESSES);
session.impersonate(new SimpleCredentials("username", "password".toCharArray()));

我有this xml到bootstrap的过滤器,还有一个FilterOrdering Task,配置如下:

tasks.add(new FilterOrderingTask("geoIp", new String[] { "contentType", "login", "logout", "csrfSecurity",
            "range", "cache", "virtualURI" }));

我错过了什么?

在 public 实例上写入 Magnolia 中的 JCR 的正确方法是什么?

是的,那行不通:D

您的过滤器是在 Magnolia 的过滤器链中配置的还是直接在 web.xml 中配置的?它需要存在于过滤器链中,并且需要在安全过滤器之后的某个位置进行配置,以便用户已经过身份验证。
然后你可以简单地调用 MgnlContext.getJCRSession("workspace_name") 来访问 repo 并做任何你需要的事情。

HTH,
一月