0

我将所有应用程序属性和配置放入一个 hippo 资源包中,并(基于通道)放入通道设置 (ChannelInfo)。

有什么方法可以从 ServletFilter 访问通道配置和 hippo 资源包?

我正在使用 SpringSecurityFilter,我需要访问这些配置项。

问候

编辑 在 HsTDelegateeFilterBean#doFilter 中,当前 hstRequestContext 被放入 ServletRequest (作为一个属性),但不幸的是它在执行 doFilter 方法后被删除。

4

1 回答 1

1

您可以从 ResourceBundleUtils.java [1] 复制一些代码。例如,

ResourceBundleRegistry resourceBundleRegistry = HstServices.getComponentManager().getComponent(ResourceBundleRegistry.class.getName());
String basename = "com.example.Messages";
ResourceBundle bundle = resourceBundleRegistry.getBundle(basename));

如果您想在 Spring Security 过滤器中获取它,这对于您的用例来说已经足够了。您正在直接在上面访问 HST 容器的单例组件。

我认为您的最后一个问题是一个不同的主题,但 HstRequestContext 实例的生命周期基本上是在请求范围内。因此,您将无法存储它以备后用。此外,Spring Security 过滤器应该位于 HstFitler 之前。这意味着您无论如何都无法访问 HstRequestContext 实例,因为它是由 HstFilter 创建的。如果您希望在其他用例中拥有一个 servlet 或 servlet 过滤器以在 HstFilter 之后访问 HstRequestContext,您可能需要查看 [2]。

[1] http://svn.onehippo.org/repos/hippo/hippo-cms7/site-toolkit/trunk/commons/src/main/java/org/hippoecm/hst/resourcebundle/ResourceBundleUtils.java [2] http ://www.onehippo.org/library/concepts/integration/hst-container-integration-with-other-web-application-frameworks.html

于 2015-07-31T15:09:17.980 回答