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

当我向spring-security的内置/登录提交post请求时,得到响应“有一个意外错误(类型=未找到,状态=404)

丌官星渊
2023-03-14

我的web应用程序是使用sping-引导,sping-Security构建的。当我向sping-Security的内置 /login提交后请求进行身份验证时,我得到的响应是“有一个意外错误(类型=未找到,状态=404)”。
SecurityConfig.java

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {

      @Autowired
      private ReaderRepository readerRepository;

      @Override
      protected void configure(HttpSecurity http) throws  Exception {
        http
          .authorizeRequests()
            .antMatchers("/readingList/**").access("hasRole('READER')")
            .antMatchers("/**").permitAll()
          .and()
          .formLogin()
            .loginPage("/myLogin")
            .failureUrl("/myLogin?error=true");
      }

      @Override
      protected void configure(AuthenticationManagerBuilder auth) 
        throws Exception {
          auth
            .userDetailsService(new UserDetailsService() {
              @Override
              public UserDetails loadUserByUsername(String username)
                throws UsernameNotFoundException {
                return readerRepository.findOne(username);
              }
            });
      }
    }

myLogin.html

    <form name='f' th:action="@{/login}" method='POST'>
    <table>
    <tr>
      <td>User:</td>
      <td><input type='text' name='username' value='' /></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><input type='password' name='password' /></td>
    </tr>
    <tr>
      <td colspan='2'><input name="submit" type="submit" value="Login" /></td>
    </tr>
    </table>
    </form>

我想当我运行网络应用程序时,它会把我重定向到myLogin.html。当我在表单submit to /login中输入正确的用户名和密码时,spring-security的一些安全过滤器将拦截请求,并使用SecurityConfig类中配置的帐户信息处理身份验证。但是我得到的响应是“出现了意外错误(类型=未找到,状态=404)”。没有可用的消息”。

共有1个答案

澹台玉石
2023-03-14

尝试在http-configure方法上显式指定Spring Security的登录处理url,例如“/userAuth”。然后,尝试发送一个post请求并检查它是否仍然找不到endpoint。

在这里:

@Override
    protected void configure(HttpSecurity http) throws  Exception {
        http
                .authorizeRequests()
                .antMatchers("/readingList/**").access("hasRole('READER')")
                .antMatchers("/**").permitAll()
                .and()
                .formLogin().loginProcessingUrl("/userAuth")
                .loginPage("/myLogin")
                .failureUrl("/myLogin?error=true");
    }

我在学习Spring Security的时候已经用过这个教程了。具体来说,在8.2节中,有一个关于登录处理endpoint的解释。

 类似资料:
  • 问题内容: 我将在春季阅读有关宁静的Web服务的这本书。我决定放弃他们的工作,而使用Java配置文件。出于某种原因,切换到Java配置后,该服务将正确运行(在控制台窗口中),但是当我实际转到localhost上的端点时,我得到了: 白标错误页 此应用程序没有针对/ error的显式映射,因此您将其视为后备。 PDT 2016年4月23日星期六20:48:25发生意外错误(类型=未找到,状态= 40

  • 我在Heroku上托管了一个Springboot应用程序。构建和部署工作得非常好。然而,每当我想访问该方法时,我都会看到这个错误<代码>出现意外错误(类型=错误请求,状态=400) 如果我使用loclhost,但使用Heroku的应用程序时抛出错误,那么它在Postman上运行得非常好。 这是控制器的样子。我猜这就是问题的来源。 . 你认为我能做些什么让api在Heroku上工作?

  • 试图请求映射提交,但我得到了这个错误,我真的不明白为什么,因为我以为每个人都提供了: [...] 上的方法是在我的控制器中映射此方法:

  • 我目前正在实现安全与Spring Boot到我的小API作为一个项目到学校当然没什么大不了的,但我想管理一些角色和东西。我一直在尝试添加. antMatcher(url). hasRole(一些角色)。...更多的蚂蚁匹配器... 当测试登录实际上显示一个错误(类型=禁止,状态=403)。 下面是一些代码 只是一个控制器,显示我的控制面板CRUD我的动物: p 我希望你们能帮助我,我是新来的。

  • 我用的是spring,Spring Security。我的应用程序有一个自定义的登录页面,一个jsp页面,我试图在其中发布用户名、密码和csrf令牌,在后端我有一个控制器来捕获和验证登录详细信息。我正在使用tomcat。我正在使用spring security进行登录验证。当我提交登录表单文件HTTP Status 405时出现以下错误-请求方法“POST”不支持任何想法? 登录页面: 控制器类:

  • 我正面临着一个很烦人的问题,我不知道该如何处理。我正在登录到我的应用程序中,导航工作良好,登录/注销工作良好。但是当我想在某处保存一些东西时,我会被直接重定向到登录页面。在日志中,只有我的LoginController被执行。当我再次登录,然后我的POST请求执行,数据是安全的。我在应用程序中到处都有这种行为,我认为这是Spring Security的配置问题。任何帮助都是非常欢迎的。 我的Spr