写入 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,
一月
我为 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,
一月