java - Spring Security - permitAll() 不允许未经身份验证的访问

标签 java spring spring-mvc websecurity

我只想允许未经身份验证的人访问几个路径:/everyone1/something1、/everyone2/something2 和/everyone3/**。 对于其余路径,我希望只允许经过身份验证的请求。

现在,我有“class WebSecurityConfig extends WebSecurityConfigurerAdapter”:

@Override
  protected void configure(HttpSecurity httpSecurity) throws Exception {
    JwtAuthenticationFilter jwtAuthenticationFilter = new JwtAuthenticationFilter(
      jwtUtils, this.accessCookie, this.selectedRoleScopeCookie);

    httpSecurity.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);

    httpSecurity.cors().and().csrf().disable();

    httpSecurity.authorizeRequests()
      .antMatchers("/everyone1/something1", "/everyone2/something2", "/everyone3/**")
      .permitAll()
      .anyRequest().authenticated()
      .and().httpBasic().disable();
  }

在“jwtAuthenticationFilter”中,我将身份验证设置为:

  private void setAuthentication2(String username, String someData, boolean authenticated) {
    User user = new User(username, "", new ArrayList<>());
    UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(user, null, new ArrayList<>());
    if (!authenticated) {
      authentication.setAuthenticated(false);
    }

    AuthenticationDetails authenticationDetails = new AuthenticationDetails(someData);
    authentication.setDetails(authenticationDetails);

    SecurityContextHolder.getContext().setAuthentication(authentication);
  }

不幸的是,上面的配置阻止了每个请求,包括经过身份验证和未经过身份验证的请求。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

此方法为经过身份验证的请求授权一些路径。你需要的是:

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring().antMatchers("/everyone1/something1", "/everyone2/something2", "/everyone3/**");
}

然后匿名请求可以访问这个路径。

关于java - Spring Security - permitAll() 不允许未经身份验证的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55402220/

相关文章:

java - dbunit 模式参数不起作用

java - Flyway 4.2.0 Oracle 11g 中多个节点并行故障

java - 访问 ArrayList 中的特定元素

java - 来自排序表 Spring Data JPA 的页面

javascript - 如何在 Highcharts 数据字段中设置变量

java - 如何使用动态xpath进行谷歌搜索?

spring - 持久订阅消费者不能同时消费超过 1 条消息吗?

java - spring如何自动使用https请求?

java - 私有(private) REST API 成熟度级别和额外的复杂性层

java - 我们可以在一个项目中同时使用Java Spring mvc和Spring Boot吗?