我正在使用Hesto / multi-auth
创建新的Auth模块后,我可以注册用户,但是当我尝试使用相同的凭据登录时,登录尝试失败。因此我更新了RegisterController.php->create()
方法并将密码加密从默认的bcrypt
更改为md5
(在存储时)。然后我通过注册创建了另一个用户,然后登录成功。
所以要理解这个问题:
我的laravel版本在登录/检查密码时使用md5加密来比较“密码”。但是我想继续使用bcrypt
进行注册和登录(在两种情况下)。我应该如何更改登录方法以使用bcrypt
而不是md5
?
我的Laravel版本:5.5.28
protected function create(array $data)
{
return Shopowner::create([
'name' => $data['name'],
'email' => $data['email'],
//'password' => bcrypt($data['password']),
'password' => md5($data['password']),
]);
}
答案 0 :(得分:1)
我的laravel版本正在使用md5加密来比较“密码” 在登录/检查密码时。但我想继续使用bcrypt 注册和登录(在两种情况下)。
在您的config/hashing.php
文件中,将驱动程序更改为bcrypt
我应该如何更改登录方法以使用bcrypt而不是md5?
在您的RegisterController
中,使用Hash::make($data['password']);
代替bcrypt
或md5
函数,以确保使用驱动程序对密码进行哈希处理
答案 1 :(得分:0)
解决方案:
尽管它似乎不是本地的laravel代码。但是有人更改了其核心,使其可以与md5
而非bcrypt
\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php
[###]中的被注释掉,并添加了新的if块以与md5
一起使用
/**
* Validate a user against the given credentials.
*
* @param \Illuminate\Contracts\Auth\Authenticatable $user
* @param array $credentials
* @return bool
*/
public function validateCredentials(UserContract $user, array $credentials)
{
$plain = $credentials['password'];
/* MD5:: This block is custom and added to work with md5 */
/* ======================== */
if(md5($plain) == $user->getAuthPassword())
{
return true;
}
else{
return false;
}
/* ======================== */
/* Bcrypt:: This line is proper to work with default bcrypt */
//### return $this->hasher->check($plain, $user->getAuthPassword());
}