私は、リセットパスワードフォームのPOST要求を処理するコントローラメソッドを持っています。このフォームには、リセットトークンの入力フィールドが隠されており、ユーザーに新しいパスワードを入力するよう求められます。Hibernate @Validator with Spring Boot
下記のコードで@Valid
注釈を使用したいと思いますが、既存のUser
クラスを使用できるかどうかはわかりません。
Hibernate Validatorは、フォーム用に特別なクラスを追加する必要がありますか?
コントローラ方法
@RequestMapping(value = "/resetPassword", method = RequestMethod.POST)
public ModelAndView setNewPassword(@RequestParam Map<String,String> requestParams) {
User user = userService.findUserByResetToken(requestParams.get("token"));
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("message", "Form data is " + requestParams.get("token") + requestParams.get("password") + user.getEmail());
modelAndView.setViewName("resetPassword");
return modelAndView;
}
Userクラス
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private int id;
@Column(name = "email")
@Email(message = "Please provide a valid e-mail")
@NotEmpty(message = "Please provide an e-mail")
private String email;
@Column(name = "password")
@Size(min = 8, max = 72, message = "Your password must be between 8 and 72 characters long")
@NotEmpty(message = "Please provide a password")
@Transient
private String password;
@Column(name = "first_name")
@NotEmpty(message = "Please provide your first name")
private String firstName;
@Column(name = "last_name")
@NotEmpty(message = "Please provide your last name")
private String lastName;
@Column(name = "enabled")
private boolean enabled;
@Column(name = "confirmation_token")
private String confirmationToken;
@Column(name = "created_on")
private Date createdOn;
@Column(name = "last_login")
private Date lastLogin;
@Column(name = "reset_token")
private String resetToken;
// Getters and setters omitted
}
あなたは何を検証しますか?リクエストからの 'token'と' password'ですか? –
@bureaqueteはい –
'@ RequestBody'を使用せず、コントローラメソッドで' User'クラスを直接使うのはなぜですか?それで、フォームは本質的に 'User'クラスなのですから、' @ Valid'アノテーションを追加することはできますか? 'token'と' reset_token'フィールド名は異なっていますが。 –