【发布时间】:2017-07-30 23:53:16
【问题描述】:
我正在尝试将 laravel 5.4 中的身份验证集成到现有数据库中,其中用户和密码字段具有其他名称(memberid、passwordnew_enc)。通过以下更改并强制RegisterController 中的create 函数使用MD5,我设法使注册工作。注册后也可以正常登录。然而实际的登录表单返回:
这些凭据与我们的记录不符。
到目前为止,我已经更改了User.php
public function getAuthPassword()
{
return $this->passwordnew_enc;
}
和
public function setPasswordAttribute($value)
{
$this->attributes['password'] = md5($value);
}
同样在LoginController.php
public function username()
{
return 'memberid';
}
我错过了什么吗?
我只需要将两个列名更改为适合,并将密码加密从 bcrypt 更改为 md5
【问题讨论】:
-
MD5 不是一个足够的密码散列算法。最好还是继续使用内置的 bcrypt 哈希并要求所有用户重置密码。
-
如果您阅读了这个问题,您就会明白为什么。我很清楚。我无权访问数据库,并且有另一个系统正在与这些用户一起运行,此时无法切换。
-
setPasswordAttribute()来自哪里? -
@dev 您的问题中没有任何内容表明您知道这一点,也没有说明您无法更改散列算法的原因。您只声明当前密码是 MD5 散列的,这就是您提出问题的原因。由于问题中没有表明您知道 MD5 不合适,因此我写了一条评论让您知道,因为很多开发人员都不知道。
-
似乎总是有一个原因,我们不能拥有安全性,难怪黑客正在接管,一个又一个漏洞?那么猜猜是谁创造了所有有缺陷的代码?开发商。确实有必要尽可能地反击,这不仅仅是糟糕的代码,而是将用户的安全置于危险之中的代码。如果我们希望被视为专业人士,我们就需要以专业人士的身份行事。
标签: php laravel encryption laravel-5 laravel-5.4