[英]Spring Security 3 Custom Filter and URL Patterns
我已经配置了自定义的Pre Auth过滤器,该过滤器扩展了AbstractPreAuthenticatedProcessingFilter
。
根据我的理解,我可以指定哪些URL模式使用此过滤器,并指定我不想在其上使用任何过滤器或安全性的所有URL。
我正在使用Spring Security 3.2和XML配置,因此我认为类似的东西应该可以工作。
<security:http pattern="/login" use-expressions="true" security="none">
</security:http>
<security:http pattern="/home" use-expressions="true" auto-config="true"
entry-point-ref="http403EntryPoint">
<security:custom-filter position="PRE_AUTH_FILTER"
ref="openTokenFilter" />
<security:session-management
invalid-session-url="/login" />
<security:session-management>
<security:concurrency-control
max-sessions="1" error-if-maximum-exceeded="true" />
</security:session-management>
<security:access-denied-handler error-page="/login"/>
<security:logout delete-cookies="JSESSIONID"/>
</security:http>
通过为pattern="/login"
指定security="none"
,我认为例如在访问“ localhost:8080 / login”时,它不会调用过滤器。 但是,它仍在调用过滤器。
过滤器似乎具有一些全局设置,每个请求都会在该全局设置中调用该过滤器。 我正在使用Spring Boot,所以我没有web.xml文件或任何自定义servlet配置。
基本上,我希望过滤器对除“ / login”外的每个URL有效。
下列句子摘自spring doc:
要使用表达式保护单个URL,首先需要将
<http>
元素中的use-expressions属性设置为true。 然后,Spring Security将期望<intercept-url>
元素的访问属性包含Spring EL表达式 。 表达式的计算结果应为布尔值,定义是否应允许访问
因此,您应该删除use-expressions =“ true”并使用pattern =“ / login *”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.