使用 Spring Security 进行 Spring 验证

问题描述 投票:0回答:2

我有一个用 springboot 和 spring security 构建的rest-api,我的问题是: 我有一个 AuthenticationController ,它将有一个注册和登录方法,我想知道在哪里应用我的验证到将作为此请求的结果创建的实体,我应该将它应用到 User 类还是注册请求上?如果是用户,在这种情况下如何应用?

我使用 jakarta 验证注释在 User 类中添加了验证

spring spring-boot validation spring-security
2个回答
0
投票

我将使用 jakarta 验证注释输入请求,并使用 @Validated 注释控制器,使用 @Valid 注释参数。请参阅此处参考:https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-controller/ann-validation.html

此外,您可以在代码中的任何位置使用 Bean 验证,例如在服务类中。但是,如果您的输入已经经过验证,那么在我的观点中的这个简单情况下,第二次调用验证将毫无意义。 https://docs.spring.io/spring-framework/reference/core/validation/beanvalidation.html


0
投票

您可以在 DTO 中添加验证,然后在端点中触发验证:

public class RegisterRequestDTO {
@NotBlank(message = "Username is required")
@Size(min = 4, max = 20, message = "Username must be between 4 and 20 characters")
private String username;

@NotBlank(message = "Password is required")
@Size(min = 6, message = "Password must be at least 6 characters")
private String password;

@Email(message = "Invalid email address")
private String email;

// Getters and setters
}

您的控制器:

@PostMapping("/register")
public ResponseEntity<?> register(@Valid @RequestBody RegisterRequestDTO 
 registerRequest) {
// Process registration
  }
© www.soinside.com 2019 - 2024. All rights reserved.