我正在尝试用Springboot和Gradle创建一个restful web应用程序。我使用JWT进行身份验证。当用户登录时,后端会为该用户创建一个用户令牌。每当他打开另一个页面来检索他的数据时,他都会使用这个令牌。
我想做的是创建一个注册页面,但问题是,如果没有Bearer令牌,我就无法将信息发送到后端。我如何发送一个post方法来创建一个用户,而不需要对这一个post操作进行身份验证?
为存在的用户生成令牌
@PostMapping(value = "${jwt.get.token.uri}")
public ResponseEntity<?> createAuthenticationToken(@RequestBody JwtTokenRequest authenticationRequest)
throws AuthenticationException {
authenticate(authenticationRequest.getUsername(), authenticationRequest.getPassword());
UserDetails userDetails = jwtInMemoryUserDetailsService.loadUserByUsername(authenticationRequest.getUsername());
final String token = jwtTokenUtil.generateToken(userDetails);
return ResponseEntity.ok(new JwtTokenResponse(token));
}
我想调用什么来在数据库中创建用户:(想在未经授权的情况下进行此POST(
@PostMapping(value = "/signup")
public ResponseEntity<User> createUser(@RequestBody User user){
HBMUserService HBMuserService = new HBMUserService();
User createdUser = HBMuserService.saveUser(user);
return new ResponseEntity<>(createdUser, HttpStatus.OK);
}
我的应用程序属性:
jwt.signing.key.secret=SecretKey
jwt.get.token.uri=/authenticate
jwt.refresh.token.uri=/refresh
jwt.http.request.header=Authorization
jwt.token.expiration.in.seconds=604800
我发现我的JWT在哪里忽略了我的Auth路径进行登录,并在那里添加了我的注册路径。
.antMatchers(
HttpMethod.POST,
authenticationPath,
"/signup"
)