我有一个User
hibernate实体:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private String username;
@Column
private String password;
// Getters and setters here
}
如果我想创建一个验证用户凭据的UserService
方法,那么validate
方法的设计应该是这样的:
public Boolean validate(Long userId, String username, String password)
或者像这样:
public Boolean validate(User user, String username, String password)
哪种设计会更好?谢谢你的时间
答案 0 :(得分:1)
你的设计目标对我没有意义。
您在登录期间唯一需要username
和password
的时间。
那时候,
username
和password
应唯一标识用户。
我相信你想要的方法是:
publid Optional<User> login(
final String username,
final String password);
然后返回包含Optional
的{{1}}(由正确的用户名和密码组合标识)或返回User
Optional
以识别错误的组合用户名和密码。
答案 1 :(得分:0)
如果用户退出,我会使用给定的用户名,密码和数据库中的搜索来创建用户的实例。
伪代码:
public booelan validate(User user) {
userService.findUser(user) != null;
}
您应该使用给定的用户名密码
创建用户的实例 User user = new User(userName, password);\\I am assuming username should be unique
然后在您的代码中使用:
if (isValidate(user)) {
//doSomething();
}
答案 2 :(得分:0)
您只需在UserRepository中添加一个方法:
User findByIdAndUsernameAndPassword(long id, String userName, String pass);
如果所有这些字段都与特定数据库条目匹配,则返回User。
传递entityId更好,我希望这可以满足您的要求。