2017-02-11 71 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