繁体   English   中英

Spring Security 3自定义过滤器和URL模式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM