【问题标题】:@WebFilter("springSecurityFilterChain") throws java.lang.IllegalArgumentException: Invalid <url-pattern>@WebFilter("springSecurityFilterChain") 抛出 java.lang.IllegalArgumentException: Invalid <url-pattern>
【发布时间】:2016-05-12 10:50:00
【问题描述】:

我的过滤器有问题。我是这样定义的:

@WebFilter("springSecurityFilterChain")
public class JwtAuthenticationFilter extends AbstractAuthenticationProcessingFilter {...}

在我的 web-fragment.xml 我有:

<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

模式应该是有效的,但我不断收到这个异常:

java.lang.IllegalArgumentException: Invalid <url-pattern> springSecurityFilterChain in filter mapping

我还尝试在 XML 和 @WebFilter 注释中使用“/”、“/security/*”、“”更改模式,但我不断收到此异常。有人可以解释一下我做错了什么吗?

谢谢。

编辑

这是 Spring Security 配置:

    @Override
    protected void configure(HttpSecurity http) throws Exception { 
        http
        .csrf().disable()
        .exceptionHandling()
        .authenticationEntryPoint(restAuthenticationEntryPoint)
        .and().authorizeRequests().
        anyRequest().authenticated().and()
        .addFilterBefore(jwtAuthenticationFilter, BasicAuthenticationFilter.class);
        http.antMatcher("/rest/login").securityContext().disable();
            }

【问题讨论】:

    标签: servlets servlet-filters illegalargumentexception url-pattern


    【解决方案1】:

    您的@WebFilter 注释有问题。如果您未在 @WebFilter 注释中指定任何内容,则默认情况下它将参数作为 URL 模式,在您的情况下为 springSecurityFilterChain

    因此,对于您的情况,您可以使用任一

    @WebFilter("/*") 
    public class JwtAuthenticationFilter extends AbstractAuthenticationProcessingFilter {...}
    

    没有在您的 xml 文件中或以下指定任何内容:

    @WebFilter(filterName = "abc") 
    public class JwtAuthenticationFilter extends AbstractAuthenticationProcessingFilter {...}
    

    在您的 xml 文件中,您可以按如下方式指定 URL 模式:

    <filter-mapping>
        <filter-name>abc</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    【讨论】:

    • 容器是否能够扫描和注册您的过滤器类??
    • 我没有得到任何异常,并且在添加过滤器时它曾经抛出一个异常,所以我认为它设法注册了它。
    • 没有。尽管我之前说过,过滤器根本没有注册。我能看到的唯一过滤器是 loggerFilter。
    猜你喜欢
    • 2015-06-14
    • 2020-11-28
    • 1970-01-01
    • 2015-12-26
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2018-03-25
    相关资源
    最近更新 更多