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

Spring Boot安全性-IllegalStateException:无法在任何请求后配置antMatchers

唐和洽
2023-03-14

我试图使用SpringBoot作为后端配置用户的角色,我的configure方法定义如下:

@Override
protected void configure(HttpSecurity http) throws Exception{
    http.httpBasic().disable().csrf().disable().sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
        .antMatchers("/api/autenticacion/login", "/api/autenticacion/registro", "usuario/").permitAll()
        .antMatchers("/usuario/**").hasAuthority("ADMINISTRADOR").anyRequest().authenticated()
        .antMatchers("/**").hasAnyAuthority("ADMINISTRADOR", "USUARIO").anyRequest().authenticated().and().csrf()
        .disable().exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
    }

错误:

组织。springframework。豆。工厂BeanCreationException:创建名为“springSecurityFilterChain”的bean时出错,该bean在类路径资源[org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]:通过工厂方法实例化bean失败;嵌套的异常是org。springframework。豆。BeanInstationException:未能实例化[javax.servlet.Filter]:工厂方法“springSecurityFilterChain”引发异常;嵌套的异常是java。lang.IllegalStateException:无法在任何请求后配置antMatchers

符号有什么问题吗?或者其他我不应该使用的方法?

共有1个答案

秦晋
2023-03-14

您的问题:

  1. csrf()和anyRequest()出现两次。
  2. . antMatcher("/**").hasAnyPower("ADMINISTRADOR","USUARIO")与其他人冲突,应删除

我更改您的代码如下。

@Override
protected void configure(HttpSecurity http) throws Exception{
        http.httpBasic().disable()
                .csrf().disable()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers("/api/autenticacion/login", "/api/autenticacion/registro", "usuario/").permitAll()
                .antMatchers("/usuario/**").hasAuthority("ADMINISTRADOR")
                .anyRequest().authenticated()
                .and()
                .exceptionHandling().authenticationEntryPoint(unauthorizedEntryPoint());
}

 类似资料:
  • 我正在从2.1.4更新我现有的springstart项目- 扩展的类的退出代码如下 这是一个在更新之前正在运行的现有代码。更新后,当应用程序启动时,我会看到以下日志:

  • 若要配置安全性设置,请前往“配置”->“安全性”。 你可以更改用户密码的复杂性要求以提高密码强度,以及强制注销所有其他用户会话。 如果要在 Navicat Monitor 和客户端之间使用加密连接(HTTPS 会话),你可以将 Navicat Monitor 配置为使用 SSL/TLS 协议。请点击“+ 添加证书”并配置以下信息: 名 輸入证书的名。 证书 粘贴证书文件的内容。 私钥 粘贴私钥文件

  • Im正在尝试从浏览器发送get请求到我的后端(node+express)。但不知何故我的头部似乎没有设置好。 前面是这样的: 在后端,我尝试启用自定义头: 我已经试过类似问题的答案,但没有一个奏效。 当我打印服务器收到的报头时,我得到:

  • 我的问题是,在发送带有错误登录凭据的请求后,或者在没有身份验证的情况下访问endpoint时,我没有得到任何响应。这是当我发送一个好的请求:好的响应屏幕时的样子 这就是请求主体无效时的情况:无效凭证请求 MyUserDetails类: 安全配置类: Jwt过滤器类别: 最后是我的控制器: 编辑:我忘了粘贴依赖项。 我还有一个AuthRequest和AuthResponse类,其中包含用户名、密码、

  • 问题内容: 我正在将Ubuntu 14.04(Trusty Tahr)与Python 2.7.6版一起使用。今天,当我创建一个新尝试并尝试做时,出现了错误。 我通过 使用Requests包时 遵循 _SSLInsecurePlatform错误中的说明解决了此问题。 但是我想了解这两个命令和之间的实际区别是什么 。 为什么前者要另外安装三个软件包? 将代码推送到生产环境时,我需要注意什么事情? 他们

  • 有人能帮助我为什么被触发,以及如何禁用它吗?作为内部系统,rest服务是否需要授权? 提前致谢,如有任何建议,不胜感激。