我在从表单绑定数据时遇到问题,我的 User 类有一个对密码进行哈希处理的构造函数,问题是如果我从表单中获取用户,密码将存储为纯文本。
我的用户构造函数:
public User(String username, String completeName, String password,
String email) {
this.username = username.toLowerCase();
this.email = email;
this.registrationDate = new Date();
this.completeName = completeName;
try {
String[] passAndSalt = PasswordHash.createHash(password).split(":");
this.salt = passAndSalt[0];
this.password = passAndSalt[1];
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
}
我的控制器:
public static Result addUser() {
Form<User> userForm = Form.form(User.class).bindFromRequest();
if (!userForm.hasErrors()) {
User formUser = userForm.get();
formUser.save();
return redirect(routes.Application.index());
} else {
return badRequest(registerUser.render(userForm));
}
}
我可以在保存用户之前对密码进行哈希处理,但我想知道 Play 是否可以使用我定义的构造函数。
使用播放!2.1.1 版