2016-02-12 87 views

回答

5

认证不通过过滤器来完成。过滤处理之前完成认证。

尽快请求到达的OSGi HttpService的调用和servlet /资源关联的HttpContext的handleSecurity。在吊带的情况下,这个要求到SlingMainServlet .handleSecurity这就要求SlingAuthenticator.authentication。

SlingAuthenticator选择一个的AuthenticationHandler该请求并转发该呼叫身份验证。

认证处理程序实现extractCredentials方法(基于身份验证方案例如授权报头基础的认证,基于会话的认证或基于cookie验证)是负责读取从饼干(或报头或会话)凭证。

这将成功认证之后返回AuthenticationInfo,如果认证失败或者匿名会话被获取(如果匿名的每个配置允许)或requestCredentials方法被调用,这将使(或重定向到)一个登录表单。 handleSecurity执行完成后 ,HttpService的要么终止请求(如果handleSecurity返回false),或致电SlingMainServlet.service这将是吊带请求处理的切入点。

Request级过滤器会后进行处理。看到https://sling.apache.org/documentation/the-sling-engine/filters.html

+0

在笔者例如,每个请求会经过SlingMainServlet? –

+0

我的意思是在作者和发布实例中,所有的请求都会经过SlingMainServlet? –

+0

是的。作者或发布并不重要。 – awd