gpt4 book ai didi

java - 使用bean进行登录和注册 - Spring MVC + Hibernate

转载 作者:行者123 更新时间:2023-11-30 02:50:24 24 4
gpt4 key购买 nike

我正在使用 Spring MVC 和 Hibernate 开发一个 Web 应用程序,让用户登录系统来访问内部页面。这是使用检查 session 变量的拦截器来完成的。

我可以正确注册寻找有效值。但是在登录的情况下,我只需要用户名和密码,我在如何使用 bean 验证登录时遇到了麻烦,因为它指责没有电子邮件等等。

这是用户类:

@Entity
public class User{


@Id
@GeneratedValue
private int id;
@NotNull
@Column(name="username",unique=true)
@Size(min=5)
private String username;
@NotNull
@Email
private String email;
@NotNull
@Size(min=5)
private String password;
private String salt;
private int status;
private String name;
private String company;
private int countryid;
@DateTimeFormat(pattern="dd/MM/yyyy")
@Temporal(TemporalType.DATE)
private Calendar subscriptionDate;
//Getters and Setters
}

Controller :

@Transactional
@Controller
public class LoginController {

@Autowired
UserDao dao;

// Other Mappings

@RequestMapping(value = "addUser", method = RequestMethod.POST)
public String makeRegistration(@ModelAttribute("user") @Valid User user, BindingResult result,
RedirectAttributes redirectAttributes) {
if (result.hasErrors()) {
return "redirect:register";
}
if (dao.add(user)) {
redirectAttributes.addFlashAttribute("user", user);
return "redirect:login";
} else {
return "redirect:register";
}

}

@RequestMapping(value = "enter", method = RequestMethod.POST)
public String doLogin(@ModelAttribute("user") @Valid User user, BindingResult result, HttpSession session) {
if (result.hasErrors()) {
return "redirect:login";
} else {
if (dao.authenticate(user)) {
session.setAttribute("userLoggedIn", user.getUsername());
return "forward:index";
} else {
return "redirect:login";
}
}

}

\\ Other mappings.

如何使用“User”类进行登录和注册?我必须使用继承吗?

最佳答案

当然不是继承!考虑一下数据结构的作用。您需要什么来支持您的登录表单。好吧,只是一个LoginForm。是持久数据吗?绝对不。 LoginFormUser 之间有什么关系?嗯,第一个有助于识别最后一个。现在我认为您应该做的是开发一个具有验证要求的 LoginForm 对象。该对象不会是持久的,但将是一个方法的参数,您将使用该方法来检索具有自己的验证的持久User

为了更精确一点,我将引入一个新类:

public class LoginForm implements Serializable {

@NotNull
@Column(name="username", unique=true)
@Size(min=5)
private String username;

@NotNull
@Size(min=5)
private String password;

//Getters and Setters

}

...并修改您的身份验证方法的签名:

    @RequestMapping(value = "enter", method = RequestMethod.POST)
public String doLogin(@ModelAttribute("user") @Valid LoginForm loginForm, BindingResult result, HttpSession session) {
// ...
}

顺便说一句,我不确定保留密码是个好主意。您可以保存哈希值或决定身份验证是外部目录的域。

关于java - 使用bean进行登录和注册 - Spring MVC + Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38858660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com