在Spring MVC中处理密码确认



我有一个需要在数据库上持久化的User实体。我需要知道是否可以按照以下方式比较用户在注册页面中输入的两个密码值;

<<p>注册视图/strong>
<form:form action="addUser" method="post" modelAttribute="user">
...
<form:password path="userPassword" id="password" />
<input type="password" name="cpassword" id="cpassword">
...
</form>

然后,在控制器中,

控制器

@PostMapping("/addUser")
public ModelAndView addUser(@ModelAttribute("user") User user, String cpassword) {
...
*service method to compare user.getUserPassword() and cpassword*
}

和User实体;

用户实体

public class User {
private int userId;
private String userName;
private String userFirstName;
private String userLastName;
private String userEmail;
private String userPhone;
private String userPassword;
}

基本上,cpassword的值作为字符串属性传递给控制器中的处理程序方法。这个方法可以吗?安全吗?这是一个小项目,我正在做学习Spring MVC。

不应该在数据库中以明文形式存储密码,而应该存储散列密码。如果出于某种原因需要将存储的密码与传入的密码进行比较,则需要使用相同的散列算法对传入的密码进行散列并比较密码。那么你知道它们是相同的,但是你不知道它们的值。

查找密码哈希(随机文章我发现没有阅读…但是会给你一个提示https://auth0.com/blog/hashing-passwords-one-way-road-to-security/)

最新更新