如何在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 {