访问受保护的spring启动资源时找不到失败

nkhmeac6  于 2021-09-30  发布在  Java
关注(0)|答案(1)|浏览(259)

我有一个小型的TestSpring启动应用程序,其中包括一个包含简单服务的控制器。该服务只是一个测试服务,它使浏览器显示一些html,如下所示:

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

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

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

如果我在没有testsecure类的情况下运行应用程序,我可以毫无问题地访问/testserv服务。然而,当我放入testsecure类时,我在尝试访问该服务时遇到404个not found失败。
我做了更多的测试。我发现导致未找到故障的原因似乎是:

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

如果我注解掉那一行,我就可以访问/testserv。有了这一行,应用程序突然找不到/testserv服务,并生成404notfound故障。
我相信我已经做了一切必要的工作,以使这项工作,但也许我错过了什么?有人能告诉我为什么使用antmatchers()会导致找不到服务吗?我如何才能正确访问此服务?

mepcadol

mepcadol1#

问题是你失踪了 @RequestMapping 对于控制器。我认为只要添加注解就可以让代码正常工作。
根据您还应使用的op注解进行更新 .formLogin() 以显示登录表单

相关问题