- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个注册表单,它使用我的 DTO 和我的用户类中的字段。我不太确定要去做,可以使用一些帮助。
我有一个 User 类,如下所示:
@Entity
public class User extends AbstractEntity {
@NotNull
private String username;
@NotNull
private String pwHash;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@Column(name = "phone_number")
private String phoneNumber;
public User() {}
public User(String username, String password) {
this.username = username;
this.pwHash = encoder.encode(password);
}
public String getUsername() {
return username;
}
private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
public boolean isMatchingPassword(String password) {
return encoder.matches(password, pwHash);
}
// ---> Removed Getters and setters removed for brevity.
@Column
注释。
public class RegisterFormDTO extends LoginFormDTO{
private String verifyPassword;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@Column(name = "phone_number")
private String phoneNumber;
public String getVerifyPassword() {
return verifyPassword;
}
public void setVerifyPassword(String verifyPassword) {
this.verifyPassword = verifyPassword;
}
public String getFirstName() {
return firstName;
}
// additional pojo getters and setters
public class LoginFormDTO {
@NotNull
@NotBlank
@Size(min = 3, max = 20, message = "Invalid username. Must be between 3 and 30 characters.")
private String username;
@NotNull
@NotBlank
@Size(min = 5, max = 20, message = "Invalid password. Must be between 5 and 30 characters.")
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@PostMapping("/register")
public String processRegistrationForm(@ModelAttribute @Valid RegisterFormDTO registerFormDTO,
Errors errors, HttpServletRequest request,
Model model) {
if (errors.hasErrors()) {
model.addAttribute("title", "Register");
return "register";
}
User existingUser = userRepository.findByUsername(registerFormDTO.getUsername());
if (existingUser != null) {
errors.rejectValue("username", "username.alreadyexists", "A user with that username already exists");
model.addAttribute("title", "Register");
return "register";
}
String password = registerFormDTO.getPassword();
String verifyPassword = registerFormDTO.getVerifyPassword();
if (!password.equals(verifyPassword)) {
errors.rejectValue("password", "passwords.mismatch", "Passwords do not match");
model.addAttribute("title", "Register");
return "register";
}
User newUser = new User(registerFormDTO.getUsername(), registerFormDTO.getPassword(), registerFormDTO.getFirstName(), registerFormDTO.getLastName(), registerFormDTO.getPhoneNumber(), registerFormDTO.getEmail());
userRepository.save(newUser);
setUserInSession(request.getSession(), newUser);
return "redirect:";
}
firstName
,
lastName
,
phoneNumber
或
email
.数据库添加了
id
,
pw_hash
和
username
.添加这些字段以便它们显示在数据库中的最佳方法是什么?先感谢您。我从这个有用的社区中学到了很多东西!
最佳答案
扩展怎么样RegisterFormDTO
带字段的类:firstName
, lastName
, phoneNumber
, email
?
那么,您的 User
类应该有另一个支持多于 username
的构造函数和 password
.在这种情况下,要限制构造函数中的参数数量,您可以使用构建器设计模式。
您可以在这里阅读更多信息:Managing constructors with many parameters in Java
还有一点关于命名约定,如果你的名字包含超过两个字符的大写快捷方式,你应该继续使用 PascalCase:RegisterDTO
-> RegisterDto
.
见:Java Naming Convention with Acronyms
关于java - 是否可以从 dto 和 User 类创建一个 newUser ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61945149/
我有一个结构错误的文件,我使用 while..read 循环将其转换为正确的结构 userid1:john doe smith:group1 userid2:jane doe smith:group2
我进行了简单的注册并向数据库添加了一个函数,当我尝试使用它时,我收到此错误 - TypeError: newUser.generateHash is not a function。我是护照新手,我想只
我发送变量 newUser来自 options.html至 background.html与 chrome.extension.getBackgroundPage()像这样 document.getE
我正在编写一个脚本,我想在数字 1 到 15 之间迭代,但希望它显示为 01 02 03 ... 13 14 15。基本上我想做的是使用 newusers 添加 15 个用户命令并将此脚本用作命令的
我很难用解析实现 newUser。我正在关注有关此注册 Parse 版本的教程。 为什么只有 password 有效而其他密码无效? self.actInd.startAnimating() var
我正在编写一个脚本,我想在数字 1 到 15 之间进行迭代,但希望将其显示为 01 02 03 ... 13 14 15。本质上,我想做的是使用 newusers 命令添加 15 个用户,并使用此脚本
我对 AAD B2C 自定义政策有一些疑问。所以这是我的问题,我想获取 newUser 属性,但我不太确定我做错了什么。 这是我的第一个解决方案,此技术配置文件的目的是注册部分,我尝试将 newUse
我正在尝试创建一个注册表单,它使用我的 DTO 和我的用户类中的字段。我不太确定要去做,可以使用一些帮助。 我有一个 User 类,如下所示: @Entity public class User ex
我是 Spring 新手,正在尝试为我的 Web 门户创建一个 RegisterController。当我在主页上按下“注册”按钮时,它会显示以下错误:“BindingResult 和 bean 名称
我有一个注册表单,我从前端提供电子邮件和密码,并从 typescript 提供活跃的 role_id 字段。我在控制台输出中变得活跃,但不是 role_id。我想如果我可以在 ts 文件的控制台输出中
当我尝试在模板上添加输入字段时,出现此错误 TypeError: self.context.newUser is undefined 这是组件 import { Component } from '@
我通常使用命令行,就像我们看到的那样: 然后突然间,我打开的所有其他终端都显示了这个奇怪的消息: This is the Z Shell configuration function for new
我正在按照关于如何设置 ssh key 并将其添加到 ssh 代理的 github 说明进行操作。但是在我输入 ssh-add -K ~/.ssh/id_rsa 之后进入终端,我收到此错误:/User
我是一名优秀的程序员,十分优秀!