如何在AEM 6.3中注册过滤器,该过滤器在HTTP请求处理期间首先在链中调用



如何在AEM 6.3中向链中首先调用的httpcontext注册过滤器。此处的目标是拦截进入AEM的请求并添加HTTP标头。基本上尝试使用SSO登录的用户信息设置HTTP标头值。此模式曾经在 CQ6.1 中工作,现在停止工作。

AEM 6.3不会为Sling Filters引入任何新逻辑。

您可以使用/system/console/request跟踪检查筛选器的顺序/优先级。筛选器优先级由@SlingFilter属性的order属性确定,如下所示。

@SlingFilter(
label = "Filter Label",
description = "implementation of a Sling Filter",
generateComponent = true, 
generateService = true, 
order = 0, 
scope = SlingFilterScope.REQUEST) // REQUEST, INCLUDE, FORWARD, ERROR, COMPONENT (REQUEST, INCLUDE, COMPONENT)
public class MySlingFilter implements Filter {
////// Implementation
}

order属性具有以下规则:

  • 它默认为 Integer.MAX_VALUE,这意味着如果未设置此属性,筛选器将位于筛选器链的末尾。

  • 该值可以为 0 或负数,以提升筛选器以便更早调用。

检查并更改此属性,看看这是否有助于解决您的问题。

某些版本的Apache Felix不存在注释@SlingFilter,您可以使用如下所示的映射。

@Component(service = Filter.class, property = {
EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
EngineConstants.SLING_FILTER_PATTERN + "=..."
})
public class SomeFilter implements Filter {

最新更新