我的 Spring 3.1 应用程序配置如下
<http use-expressions="true" entry-point-ref="http401UnauthorizedEntryPoint">
<intercept-url pattern="/app/demo" access="hasRole('Demo')" />
<intercept-url pattern="/app/**" access="isAuthenticated()" />
<intercept-url pattern="/admin/**" access="hasRole('Admin')" />
<custom-filter position="PRE_AUTH_FILTER"
ref="currentWindowsIdentityAuthenticationFilter" />
<logout invalidate-session="true" delete-cookies="JSESSIONID"
logout-url="/logout" logout-success-url="/logout-success" />
</http>
我写了一个自定义的 preauth 过滤器。当我在根 URL 调用我的应用程序时,/
过滤器链会挂接并运行 preauth 过滤器,尽管此资源不受保护。这意味着注销无法按设计工作。注销后再次执行登录。
我的实现是基于org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter
类的。
这是正常行为还是可以通过某种方式解决?我希望仅在受保护的 URL 上执行身份验证。
正如我的旁注,我不打算配置security='none'
,因为我想维护所有页面上的安全上下文。
我已经在pastebin上发布了适当的注销。过于冗长,无法包含在此处。