java - 登录 DTO 在 Spring Controller 中不起作用
问题描述
我正在 Spring Boot 中进行登录休息。所以我创建了User
实体并UserLoginDTO
用于登录。但似乎它在运行时不起作用
我的 DTO 具有validation()
验证用户名和密码的功能。但它很简单,比如:
public boolean validate(String username, String password) {
if (username == this.username && password == this.password) {
return true;
}
return false;
}
用户登录DTO:
@Data
public class UserLoginDTO {
private String username;
private String password;
public boolean validate(String username, String password) {
if (username == this.username && password == this.password) {
return true;
}
return false;
}
}
用户:
@Entity
@Table(name = "users")
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "username", nullable = false, unique = true)
private String username;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "joined_date", nullable = false, unique = true)
@CreatedDate
private Date joinedDate;
@Column(name = "password")
private String password;
@Column(name = "bio")
private String bio;
@Column(name = "email", nullable = false, unique = true)
private String email;
}
@GetMapping("/login")
public @ResponseBody String login(@RequestParam("username") String username, @RequestParam("password") String password) {
User user = repo.queryUserLogin(username, password);
UserLoginDTO dto = new UserLoginDTO();
dto.setUsername(user.getUsername());
dto.setPassword(user.getPassword());
if(dto.validate(username, password)) {
return "Login successfully!";
}
return "Login failed!";
}
但是当我运行代码并尝试从 URL 获取结果时(我使用邮递员)。但这不能正常工作:
解决方案
您应该将字符串与equals
方法进行比较,而不是与 ==
推荐阅读
- c++ - 尽管一切看起来都很好,但值并没有交换
- sequelize.js - sequelize 中的批量删除和销毁有什么区别?
- adobe - Adobe Experience Manager - 用于无头消费的隐藏内容
- javascript - 仅接受十六进制输入
- java - 无法使用数据流访问记录类型数组列进行键值转换
- javascript - 正则表达式到特定字符串
- javascript - 如何仅在地图中执行所有等待之后才增加变量值,以便我可以执行承诺并行?
- python - Python 列表循环
- php - PHP / SQL:如果在表A和表B中更新后满足条件,则更新表C
- php - 如何从发送用户个人资料更改电子邮件中排除 WooCommerce 结帐?