2017-02-11 39 views
-4

我需要使用md5()而不是bcrypt()来存储密码。但是,当我这样做:如何使用md5而不是bcrypt?

protected function create(array $data) 
{ 
    return Account::create([ 
     'username' => $data['username'], 
     'email' => $data['email'], 
     'password' => md5($data['password']), 
     'datetoday' => Carbon::now(), 
     'lastip' => request()->ip(), 
     'confirmation' => bcrypt($data['password']), 
    ]); 
} 

当我尝试登录它说证书是错误的。

+1

虽然使用MD5来哈希密码是一个可怕的,可怕的想法,您需要使用相同的方法来解密和加密密码(您仍然有确认中的bcrypt)。 – JJJ

+4

你为什么需要? md5()不太安全。 –

+0

因为数据库连接到一个我没有控制权的游戏,它检查密码在md5 –

回答

1

不推荐在bcrypt()上使用md5()。

但是,您可以手动认证用户。在LoginController中替代login()方法

public function login(Request $request) 
    { 
    $user = User::where('username', $request->username) 
        ->where('password',md5($request->password)) 
        ->first(); 
    Auth::login($user); 
    return redirect('/'); 
    } 
+0

它仍然告诉我,凭据是错误的。 –

+0

@SinanSamet替代'login()'。 –

+0

请解释downvote。因为这会起作用。我不推荐使用'md5()' –

1

您必须创建新的服务提供者。

应用/供应商/ md5hashprovier.php

namespace App\Providers; 
class MD5HashProvider extends \Illuminate\Hashing\HashServiceProvider 
{ 
    public function boot() 
    { 
    \App::bind('hash', function() { 
     return new \App\Classes\MD5Hasher; 
    }); 
}} 

接下来,您必须创建MD5Hasher类。我建议把它定位到 应用程序/班/ MD5Hasher.php

class MD5Hasher extends BcryptHasher 
{ 
public function check($value, $hashedValue, array $options = array()) 
    { 
     $user = User::wherePassword(md5($value))->first(); 
     return $user ? true : false 
    } 
} 

,并注册新的服务提供商提供一个存储到config/app.php

\App\Providers\MD5HashProvider::class, 

这将使具有权威性md5密码

+0

我也试过,但它仍然没有登录。它说错误的凭据 –

+0

我从项目中采取了这个。试着去死('asd') - asd出现了吗?如果没有 - 你错过了什么 – arku

+1

对于想知道为什么MD5Hasher类不起作用的人,你需要包含这些: namespace App \ Classes; 使用Illuminate \ Hashing \ BcryptHasher作为BcryptHasher; 使用App \ User作为用户; – WebTim

相关问题