我正在尝试在我的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 {
...
}