Java 电子邮件或用户名验证
我想通过控制器检查来自数据库的电子邮件,并检查电子邮件是否已经存在!!!(email=数据库中的列),请给我一些新想法Java 电子邮件或用户名验证,java,spring,Java,Spring,我想通过控制器检查来自数据库的电子邮件,并检查电子邮件是否已经存在!!!(email=数据库中的列),请给我一些新想法 @RequestMapping(value = "/signup", method = RequestMethod.POST) public String saveUser(@ModelAttribute User user, Model model) { if (!user.getName().isEmpty() || !user.getEmail().is
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String saveUser(@ModelAttribute User user, Model model) {
if (!user.getName().isEmpty() || !user.getEmail().isEmpty() || !user.getPassword().isEmpty()) {
user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes()));
udao.addUser(user);
return "login";
}
else {
model.addAttribute("error", "fill the form completely!!!");
return "signup";
}
}
假设您拥有udao作为数据访问权限,您只需要创建一个方法,以获得给定电子邮件id的用户对象,如
@Query(value="select * from users where email = :emailId and isactive=1", nativeQuery=true)
User getUserByEmailId(@Param("emailId")String emailId);
或
@Query(value="select count(*) from users where email = :emailId and isactive=1", nativeQuery=true)
Integer getUserByEmailId(@Param("emailId")String emailId);
在选项2中,您只需获得拥有该电子邮件的用户数,0
表示该电子邮件是唯一的
,反之亦然
此DAO完成后,您可以通过调用此方法进行验证,如果您的响应为null,则表示数据库中没有用户,否则用户存在,您可以使用提供的电子邮件id向最终用户显示该用户已经存在
改进代码的两点,
请不要在控制器中编写DAO
访问逻辑,最好使用UserDetailsService
这样的服务,以便在服务中应用所有数据访问和业务规则,促进SOC、单元可测试性等
也可以考虑使用一个高度安全的算法来处理密码,如代码> PBKDF2</代码>,这是非常安全的。
HTH假设您拥有udao作为数据访问权限,您只需要创建一个方法来获取给定电子邮件id的用户对象,如
@Query(value="select * from users where email = :emailId and isactive=1", nativeQuery=true)
User getUserByEmailId(@Param("emailId")String emailId);
或
@Query(value="select count(*) from users where email = :emailId and isactive=1", nativeQuery=true)
Integer getUserByEmailId(@Param("emailId")String emailId);
在选项2中,您只需获得拥有该电子邮件的用户数,0
表示该电子邮件是唯一的
,反之亦然
此DAO完成后,您可以通过调用此方法进行验证,如果您的响应为null,则表示数据库中没有用户,否则用户存在,您可以使用提供的电子邮件id向最终用户显示该用户已经存在
改进代码的两点,
请不要在控制器中编写DAO
访问逻辑,最好使用UserDetailsService
这样的服务,以便在服务中应用所有数据访问和业务规则,促进SOC、单元可测试性等
也可以考虑使用一个高度安全的算法来处理密码,如代码> PBKDF2</代码>,这是非常安全的。
HTH假设您使用的是Spring Data JPA,您可以通过以下方式查询数据库,以检查是否有用户使用该电子邮件(检查示例60.UserRepository中的查询方法声明):
假设您使用的是Spring Data JPA,您可以通过以下方式查询数据库,以检查是否有用户使用该电子邮件(检查UserRepository中的示例60.query方法声明):
感谢您的回答,实际上我想在控制器内的db中寻址电子邮件路径,如(@PathVariable(“电子邮件”)字符串电子邮件)列,并仅检查其中的输入,如果不存在类似的电子邮件,则将其传递到数据库…感谢您的回答,实际上我想寻址电子邮件路径,如(@PathVariable(“电子邮件”)字符串(电子邮件)列在控制器内的db中,并仅检查其中的输入,如果不存在类似的电子邮件,则将其传递到数据库。。。