【问题标题】:How can I call Sling Filter before AuthenticationHandler?如何在 AuthenticationHandler 之前调用 Sling Filter?
【发布时间】:2014-08-13 11:24:21
【问题描述】:

我想在身份验证处理程序之前放置一个吊索过滤器,但我没有运气。

从日志中我可以看到 authandler 总是在我的过滤器之后调用。有没有关于这个的好文档?是否可以在 authenticationhandler 之前放置一个过滤器?

当我将日志记录到 authandler 的 extractCredentials 方法和 Filter 的 doFilter 方法时,两者都有效。但不幸的是,我的过滤器是在 authandler 之后调用的。

这是我的日志:

11:50:55.924 AuthenticationHandler extractCredentials
11:50:56.004 Before chain.doFilter
11:50:56.332 After chain.doFilter

【问题讨论】:

  • 你不能这样做,就像我的回答一样。考虑发布第二个问题,描述为什么你想这样做以及你想达到什么样的高级结果——也许根本不需要创建这样的过滤器?跨度>

标签: aem sling


【解决方案1】:

身份验证总是在过滤处理之前完成:

  • 请求级别
    • 身份验证
    • 资源解析
    • Servlet/脚本解析
    • 请求级过滤处理

(来源:Sling documentation)。

因此,您不能创建将在身份验证之前运行的过滤器。

【讨论】:

  • 我找到了一个丑陋的解决方案,如果我使用模式,那么我的过滤器将不是吊索过滤器,但它会在吊索过滤器链之前运行。 felix.apache.org/documentation/subprojects/…
  • aem-acs-sample 在 AEM 6.1 中工作,但在 AEM 6.2 中,吊索引擎在过滤器之前出现。 @nerd 您是否在 AEM 6.2 或 6.3 中测试过您的更改?
  • @SandeepKumar 我自 2015 年以来就没有与 AEM 合作过。:(
【解决方案2】:

您可以使用 OSGI 预处理器,它会在调用身份验证之前充当过滤器,您可以在此处找到规范和一个示例: https://docs.osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html#service.http.whiteboard.servlet.preprocessors

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    相关资源
    最近更新 更多