【问题标题】:Chance SQL plain password field to Laravel hash password将 SQL 普通密码字段转换为 Laravel 哈希密码
【发布时间】:2020-01-15 17:18:45
【问题描述】:

我正在尝试使用 make:auth 包登录我的 laravel 应用程序 在我的数据库中有一个纯文本密码字段,我想使用这个名为 vcclave 的字段登录,但也具有常规 make:auth 包的功能有没有办法进行这种替换?

或者有办法让这个字段加密,让 laravel 能够识别?

【问题讨论】:

  • 您可能以前听说过这个,但是将纯文本密码存储在数据库中并不是一个好主意(即使您自己没有存储机密数据)!为什么需要纯文本格式?
  • 等一下,您是否正在尝试将您当前的纯文本密码迁移为散列密码?
  • 我不需要是纯文本,但是我找不到像 laravel 需要的那样对 SQL server 中的所有 vcclave 数据进行哈希处理的方法,你知道怎么做吗?
  • 有没有办法使用 make:auth 模块而不使用哈希密码确认?

标签: sql laravel


【解决方案1】:

根据您的文字,我假设 vcclave 是您的密码列。您绝对应该尝试摆脱数据库中的纯文本密码字段。这里有两个选项:

  1. 创建新列并删除旧列
    您可以 1. 创建一个password 列,从vcclave 中读出所有密码,并通过Hash::make 将其散列保存在新的password 列中。之后,您应该删除 vcclave 列,但要确保其他任何地方都不需要它。

  2. 更新现有密码列中的值
    类似于 1. - 获取所有列并通过Hash::make更新每一列

  3. 更改控制器行为
    根据您最初的问题,您可能还想更改控制器行为like in this answer

【讨论】:

  • 有没有办法直接在 SQL 中散列它们?我的意思是使用 vcclave 哈希的所有值创建密码列?
  • 我不会这么说,因为 Laravel 使用 Bcrypt,因此也不允许您在 MySQL 中进行直接哈希比较。它总是提取散列密码,然后使用Hash::check 来比较值。话虽如此,您应该编写一个小脚本。您可以将其放入迁移中,这样您就可以轻松地将此数据库端更改与代码中的其他更改一起部署。
猜你喜欢
  • 2017-07-24
  • 2020-02-11
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多