Getting Not Found 访问受保护 Spring 启动资源失败

Getting Not Found failures accessing protected Spring Boot resources

我有一个小测试 Spring 引导应用程序包括一个包含简单服务的控制器。该服务只是使浏览器显示一些HTML的测试服务,如下图:

@RestController
public class TestController
{
   @GetMapping("/testserv")
   public String getUserInformation()
   {
      return("<p>User authenticated!</p>");
   }
}

我还有一个配置 class 旨在要求用户进行身份验证才能访问该服务。目的是使应用程序中的所有其他服务无需登录即可访问,而访问 /testserv 需要登录:

@Configuration
@EnableWebSecurity
public class TestSecure extends WebSecurityConfigurerAdapter
{
   @Override
   protected void configure(HttpSecurity httpSecure) throws Exception
   {
      httpSecure.authorizeRequests()
                .antMatchers("/testserv").authenticated()
                .anyRequest().permitAll();
   }
}

如果我 运行 我的应用程序没有 TestSecure class,我可以毫无问题地访问 /testserv 服务。但是,当我输入 TestSecure class 时,我在尝试访问该服务时遇到 404 Not Found 失败。

我做了更多测试。我发现似乎导致 Not Found 失败的原因是:

                .antMatchers("/testserv").authenticated()
                

如果我注释掉该行,我就可以访问/testserv。在那一行之后,应用程序突然找不到 /testserv 服务并生成 404 Not Found 故障。

我相信我已经完成了所有必要的工作,但也许我遗漏了什么?谁能告诉我为什么使用 antMatchers() 会导致找不到服务?我怎样才能正确访问此服务?

问题是您缺少 @RequestMapping 控制器。我认为只需添加该注释就可以使您的代码正常工作。

根据 OP 评论更新 您还应该使用 .formLogin() 以显示登录表单