写入JCR(JackRabbit)时的AccessDeniedException [Magnolia]

时间:2015-06-16 08:45:20

标签: jcr magnolia

我为geoIP本地化写了一个请求过滤器。它的工作方式是我请求外部服务进行本地化,然后将信息写入JCR,进入专用工作区进行缓存/存储。

在作者实例上,这有效,但在公共实例上,我经常会遇到AccessDeniedException。我可能需要使用JCR进行身份验证,我也尝试使用magnolia.properties文件中的crendentials:

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来引导过滤器,还有一个FilterOrdering Task,配置如下:

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

我错过了什么?

在公共实例上写入Magnolia中的JCR是正确的吗?

1 个答案:

答案 0 :(得分:1)

是的,这不行:D

您的过滤器是在Magnolia的过滤器链中配置还是直接在web.xml中配置?它需要存在于过滤器链中,并且需要在安全过滤器之后在链的某处进行配置,以便用户已经过身份验证。
然后,您只需致电MgnlContext.getJCRSession("workspace_name")即可访问回购并执行您需要的任何操作。

HTH,