2013-11-09 38 views
9

所以,我正在切換到laravel用於我的網站。我的舊網站目前擁有約500名用戶。每個用戶都有一個md5哈希值作爲密碼(duh ^^)。Laravel 4 Auth - 使用md5而不是集成的Hash :: make()

當我切換到laravel時,我希望使用Auth :: attempt 不幸的是,它使用自己的方法來哈希密碼字符串。我不希望所有用戶都更改密碼,因爲我正在切換到laravel,是否可以使Auth類使用md5,因此我的用戶不必切換密碼? :)

如果是的話,有人可以告訴我如何?

+0

然後你需要創建自己的認證,像'如果($結果比較數據庫('user') - >其中('username',Input :: get('user')) - > where('password',md5(Input :: get('password')))) {//成功登錄}',雖然Ronni說最好不要使用'md5'並強制它們改變 – user2002495

+0

看看這裏:http://stackoverflow.com/a/17719586/1661358即使答案是SHA1 ,這與MD5的過程幾乎相同。 – rmobis

回答

34

MD5非常過時。我建議你不要試圖保留它。 相反,當用戶第一次登錄,並Auth::attempt失敗,則應嘗試他們的密碼MD5

$user = User::where('username', '=', Input::get('username'))->first(); 

if(isset($user)) { 
    if($user->password == md5(Input::get('password'))) { // If their password is still MD5 
     $user->password = Hash::make(Input::get('password')); // Convert to new format 
     $user->save(); 
     Auth::login(Input::get('username')); 
    } 
} 
+0

謝謝,我會試試看,並回來:) – Jazerix

+5

它不能說明得足夠多:不要使用md5。 [這篇文章](http://codahale.com/how-to-safely-store-a-password/)有很好的信息,爲什麼。 – fideloper

+0

那麼,在新系統中,我將強制用戶在登錄時再次輸入密碼,以便我可以將密碼哈希更改爲一個laravel所使用的密碼。我很高興我已經學會了這個雖然^^謝謝 – Jazerix

相關問題