Spring Boot JWT Ant-Mather阻止请求



我正在尝试在我的Spring Boot应用程序中实现JWT。我实现了这样的WebSecurityConfig


@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.csrf().disable()
.authorizeRequests().antMatchers("/login/*").permitAll().
anyRequest().authenticated().and().
exceptionHandling().and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}

在控制器内部,我只有几个端点,仅用于这样的测试:


@RestController("/login")
public class LoginController {
@PostMapping("/signup")
private void signup(@RequestBody LoginCredential loginCredential){
System.out.println("signup");
}
@PostMapping("/signin")
private void signin(@RequestBody LoginCredential loginCredential){
System.out.println("signin");
}
@GetMapping("/test")
private String test(){
return "test, working ?";
}
}

但是当我在http://localhost:8080/login/signup发布一些数据时,它说404

然后我写了一个过滤器/拦截器来检查请求的结束位置。 我发现这个:http://localhost:8080/login/signup

作者 :System.out.println(request.getRequestURL().toString());

我认为我在蚂蚁匹配器中的WebSecurityConfigurerAdapter存在一些问题。

如何解决此问题?

你得到404是因为你的路径不正确,正确的路径是

http://localhost:8080/signup

因为根据文档"/登录"是逻辑组件名称。

如果您希望使此网址正常工作

http://localhost:8080/login/signup

然后你必须RequestMapping添加到RestController因此你的控制器应该看起来像这样:

@RestController
@RequestMapping("/login")
public class LoginController {
...
}

最新更新