当前位置: 首页 > 知识库问答 >
问题:

如何配置过滤器使用WebSecurityConfigrerAdapter?

梁丘书
2023-03-14

我试图添加一个过滤器,需要参数作为FilterConfig给出。我将它添加到WebApplication ation初始::onStartup(ServletContext容器)方法中,并且配置良好(init方法使用正确的FilterConfig调用)。

@Override
public void onStartup(ServletContext container) throws ServletException {
    super.onStartup(container);

    FilterRegistration.Dynamic urlRewriteFilter = container.addFilter("UrlRewriteFilter", UrlRewriteFilter.class);
    urlRewriteFilter.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*");
    urlRewriteFilter.setInitParameter("confPath", "WEB-INF/urlrewrite-prod.xml");
}

关键是我使用的是SpringSecurityWebSecurityConfigureAdapter,我的过滤器从未被调用过(不在过滤器链中)。如果我用addFilterAfter添加它,就没有办法给他一个FilterConfig。

 @Override
 protected void configure(HttpSecurity http) throws Exception {
  http
  .exceptionHandling()
    .authenticationEntryPoint(spnegoEntryPoint())
    .and()
    .authorizeRequests()
        .antMatchers("/").permitAll()
        .anyRequest().authenticated()
        .and()
    .httpBasic()
        .and()
    .logout()
        .and()
    .addFilterBefore(spnegoAuthenticationProcessingFilter(authenticationManagerBean()), BasicAuthenticationFilter.class)
    .addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class)
    .addFilterAfter(new CacheFilter(), CsrfFilter.class)
    .addFilterAfter(new UrlRewriteFilter(), CsrfFilter.class);
 }

我哪里错了?

共有1个答案

傅正阳
2023-03-14

我的错误是在过滤器映射。我调用addMappingForServletNames而不是addMappingForUrlPatterns

@Override
public void onStartup(ServletContext container) throws ServletException {
    super.onStartup(container);

    FilterRegistration.Dynamic urlRewriteFilter = container.addFilter("UrlRewriteFilter", UrlRewriteFilter.class);
    //urlRewriteFilter.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*");
    urlRewriteFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD), false, "/*");
    urlRewriteFilter.setInitParameter("confPath", "WEB-INF/urlrewrite-prod.xml");
}
 类似资料:
  • 问题内容: 我正在使用Spring Security 3.2和Spring 4.0.1 我正在将xml配置转换为Java配置。当我在“过滤器”中添加注释时@Autowired,出现异常 我已经尝试了注入,但是由于类似的异常也失败了。 这是我正在使用的XML配置 这是我正在尝试的Java Config 这是“自定义过滤器”类。给我麻烦的那一行是AuthenticationManager的设置器 问题

  • 我运行在MongoDB 3.6,与mongo驱动程序3.4.3和Spring数据mongo 1.5.10。下面是我文档的结构 我正在尝试对数据进行批量更新,如下所示 现在并尝试将此代码转换为java。下面是我能够实现批量更新的代码。正如预期的那样,由于使用$[],下面的查询正在更新所有文档。我试图找出如何在这里使用位置数组更新运算符(如$[one])应用数组过滤器。 此外,我也找不到足够的教程或文

  • 问题内容: 我会写 我还可以使用其他哪些过滤器? 我可以使用这样的东西吗? 问题答案: Docker v1.13.0支持以下条件: 或用于按某些值过滤图像: 参考文献 码头工人图像过滤 码头工人文档

  • 问题内容: 我写了一个过滤器函数,它将根据您传递的参数返回数据。我希望控制器具有相同的功能。是否可以在控制器中重用过滤器功能? 到目前为止,这是我尝试过的: 问题答案: 将 $ filter 注入控制器 然后,无论您想在哪里使用该过滤器,都可以像这样使用它: 如果要将参数传递给该过滤器,请使用单独的括号进行处理: 您要过滤的数组在哪里,并且是用于过滤的对象。

  • 如何使用java8流和过滤器过滤嵌套循环? 假设我有一个汽车列表(

  • 问题内容: 我想在过滤器中向后端请求并返回请求的结果。问题是服务$ http返回一个承诺,这就是问题。 对于存在的问题,我用$超时和角度在我的小提琴的承诺: 我的小提琴 在我的过滤器中,我使用带有承诺的$ timeout,但是最终目标是使用请求http: }); 然后在我看来,我使用了我的过滤器,该过滤器假定以2秒的延迟显示“ ca marche”,但这不起作用: 您会看到过滤器不返回任何内容,并