首页 > 解决方案 > 登录 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 获取结果时(我使用邮递员)。但这不能正常工作:

邮递员错误页面

标签: javaspringspring-boot

解决方案


您应该将字符串与equals方法进行比较,而不是与 ==

你可以在这里阅读它https://javarevisited.blogspot.com/2012/12/difference-between-equals-method-and-equality-operator-java.html


推荐阅读