【问题标题】:JPA - Java Spring Boot - problems finding account with password encoding?JPA - Java Spring Boot - 使用密码编码查找帐户时遇到问题?
【发布时间】:2017-09-06 11:07:09
【问题描述】:

我是 JPA 的新手 - 我已经开始构建用户系统并将编码 bean 添加到我的 pom 中。

当我在表格中搜索一个电子邮件地址时 - 它会找到用户并返回数据。

TblLogin acc = tblLoginRepository.findByEmail(email);  

我为此拥有的仓库如下。

public interface TblLoginRepository extends JpaRepository<TblLogin, String> {
    TblLogin findByEmail(String email) throws Exception;
}

-- 当我尝试使用编码的密码进行查找时,它找不到用户 - 我不确定为什么数据看起来正确?

有密码

TblLogin checkAccount = tblLoginRepository.findByEmailAndPassword(email,passwordEncoder.encode(password));

repo2

public interface TblLoginRepository extends JpaRepository<TblLogin, String> {
    TblLogin findByEmail(String email) throws Exception;
    TblLogin findByEmailAndPassword(String email, String password) throws Exception;
}

--

是不是因为我的密码类型改变了? - 它应该检查其他东西吗...

【问题讨论】:

  • 你到底想要什么?有什么问题?
  • --好的-我正在获取用户帐户的数据-我可以看到当我尝试登录时-密码编码实际上正在改变-所以它不会找到结果...有没有一种方法可以让相同的编码结果与存储在数据库中的内容进行匹配——类似于 md5(x)
  • 编码是如何变化的?您是否将 PasswordEncoding 声明为 bean?你在“保存”过程中使用它吗?
  • --好的,所以我注册了用户-使用 PasswordEncoding.encode(password)

标签: java jpa spring-boot


【解决方案1】:

我不完全知道你是如何实现它的。在实现该功能时确保几件事情。

1 - 注册 PasswordEncoder bean:

public PassordEncoder encoder() {
     return new BCryptPasswordEncoder(11, new SecureRandom("seed".getBytes("UTF-8)));
}

依赖于自定义“种子”(出于安全原因)

2 - 确保您使用相同的字符集进行编码。 如前所述...我不知道您如何检索您正在散列的密码。试一下构造(丑)如下:

 String passwordToHash = new String(password.getBytes("UTF-8"));

3 - 你如何在你的数据库中存储哈希?您能否验证您在“保存”过程中生成的哈希值与您在该过程之后存储的哈希值是否相同?

希望对你有帮助。

【讨论】:

  • 1.想让我添加一个 try/catch 方法——或者一个 throw 声明
  • 2.我做了匹配的想法——它需要人类可读的密码——和存储的密码(我首先通过在电子邮件上查找)——所以我首先得到可能的用户与电子邮件——然后做一个检查输入的密码和存储的密码 -- if(passwordEncoder.matches(password, checkAccount.getPassword())) {
  • 3.-- 在注册映射中 - 我像这样存储新帐户 - 所以检查电子邮件是否存在 - 然后执行 saveAndFlush - // 如果不创建一些TblLogin newAcc = tblLoginRepository.saveAndFlush(new TblLogin( email, passwordEncoder.encode(password), pin ));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 2023-01-23
  • 2013-02-13
  • 2016-08-31
  • 2018-03-01
  • 1970-01-01
相关资源
最近更新 更多