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

Spring Security错误:java.lang.IllegalStateException:无法在自身之后配置anyRequest

司空俊雅
2023-03-14

我在尝试启动spring boot应用程序时遇到了这个错误,我似乎想不出原因。任何帮助都是非常感谢的。

org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/security/config/annotation/web/configuration/websecurityconfiguration.class]中定义的名为“Spring SecurityFilterChain”的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.BeanInstantiationException:无法实例化[javax.servlet.filter]:工厂方法“Spring SecurityFilterChain”引发异常;嵌套异常为java.lang.IllegalStateException:无法在自身之后配置anyRequest

super.configure(http)方法失败。这是我的'SpringSecurityConfig.java'类

@Configuration
@EnableWebSecurity(debug = true)
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
    @Autowired
    private CustomUserDetailService customUserDetailsService;

    @Bean
    public JWTAuthenticationFilter jwtAuthenticationFilter() {
        return new JWTAuthenticationFilter();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .cors()
                .and()
                .csrf()
                .disable()
                .authorizeRequests()
                .antMatchers("/auth/**").permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);

            http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);

        super.configure(http);
    }




    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {

        return new BCryptPasswordEncoder();
    }

    @Bean
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }
}

全堆栈跟踪

共有1个答案

公西俊民
2023-03-14

您不应调用super.configure(http),因为您要使用自定义安全配置。

该错误是由于父configure(http)方法已经在调用.AuthorizeRequests().AnyRequest().Authenticated()以及错误消息中提到的

无法在自身之后配置anyRequest

 类似资料:
  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe

  • 问题似乎出在代码上。..它指向/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/,而它需要查看jar所在的/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/lib/。谢谢你的回答…

  • 我想把facebook的身份验证和devise整合起来。 我使用这个教程(http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin),并让它在本地工作,但我一直得到一个错误,当我推到heroku。我已经将Facebook开发/应用程序部分中的链接更改为实际域。 我在。对于“app_doma

  • 错误是:无法解析Android应用程序模块的Gradle配置。解决gradle构建问题和/或重新同步。 我的代码: 我做错了什么?谢谢

  • 以下是错误消息 java.lang.IllegalStateException:无法加载ApplicationContext 一个使用elasticSearch、mysql、redis等的Spingboot项目,谷歌有很多,但他只是一个新的Spingboot。网上的东西不管用。我不知道怎么改。 application-local.yml 应与ES的配置相关 控制器