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

Spring Security在自定义筛选器上排除URL

扈韬
2023-03-14
@SuppressWarnings("SpringJavaAutowiringInspection")
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

   @Autowired
   private JwtAuthenticationEntryPoint unauthorizedHandler;

   @Autowired
   private UserDetailsService userDetailsService;

   @Autowired
   public void configureAuthentication(AuthenticationManagerBuilder
      authenticationManagerBuilder) throws Exception {
      authenticationManagerBuilder.userDetailsService(userDetailsService);
   }

   @Bean
   public JwtAuthenticationTokenFilter authenticationTokenFilterBean() throws Exception {
      return new JwtAuthenticationTokenFilter();
   }

   @Override
   protected void configure(HttpSecurity httpSecurity) throws Exception {
      httpSecurity
         .csrf().disable()
         .exceptionHandling()
             .authenticationEntryPoint(unauthorizedHandler)
             .and()
         .sessionManagement()
             .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
             .and()
         .authorizeRequests()
             .antMatchers("/test").permitAll()
             .antMatchers("/api/**").permitAll()
             .anyRequest().authenticated();

      httpSecurity.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);
   }
}

共有1个答案

孟英光
2023-03-14

您可以为某些URL禁用Spring Security筛选器链,请参阅WebSecurity#忽略:

允许添加Spring Security应该忽略的RequestMatcher实例。Spring Security提供的Web安全性(包括SecurityContext)在匹配的HttpServletRequest上不可用。通常,注册的请求应该是静态资源的请求。对于动态请求,请考虑将请求映射为允许所有用户。

用法示例

webSecurityBuilder.ignoring()
// ignore all URLs that start with /resources/ or /static/
           .antMatchers("/resources/**", "/static/**");
 类似资料:
  • 我有一个Spring Boot应用程序,在其中我试图创建一个自定义安全过滤器,如下所示:

  • 存储在Django模型中的元素如下 示例数据如下: . 结果:找到对象- 结果:找到对象- 结果:找到对象- 结果:未找到对象 如何使用过滤器和正则表达式进行这些查询?

  • 首先,你知道,我没有很长的计算机科学背景,今年才开始研究web语义,所以我已经为我在这个问题中可能使用的任何不精确/非科学术语/糟糕的编码风格道歉了。 这里是我的任务:我想找到与我之前从一些文档中提取的一些标签最接近的dbpedia资源。为此,我使用了一个自定义的过滤器函数(执行骰子系数计算,例如返回0到1之间的分数)来计算DBpedia标签和提取的表达式之间的相似性(我使用的是Jena Apac

  • 我创建了一个自定义筛选器,用于获取令牌,然后用与令牌相关的角色填充身份验证对象 然后,我将该过滤器添加到springsecuritycontext中,如下所示: 应用程序已经存在,我只是尝试添加Spring Security层。Spring Security版本为4.2.3。在尝试实现此功能的几天后,不会加载,因此不会筛选任何请求。请帮帮忙。

  • 下面是过滤器的外观。 对于WebSecurityConfigurerAdapter#configure(webSecurityWeb)web.忽略()中包含的路径,我希望该筛选器不会像Spring Security筛选器链的其余部分一样激发。 下面是它的样子 我希望在调用Spring Security链的其余部分时调用这个过滤器,并对web.igneration()中的路径忽略这个过滤器,就像Sp

  • 我希望每个请求都能收到一些信息,因此我认为与其为每个请求提供一个函数并分别从请求中获取这些信息,不如使用一个过滤器<所以每一个请求都会通过这个过滤器,我就能得到我想要的 问题是:如何编写自定义筛选器 假设它不像任何预定义的Spring Security过滤器,它是全新的。