Laravel 4 Auth - 使用md5而不是集成的Hash :: make()

时间:2013-11-09 16:33:45

标签: php hash laravel laravel-4

所以,我正在为我的网站切换到laravel。我的旧网站目前拥有约500名用户。每个用户都附加了一个md5哈希值作为密码(duh ^^)。

当我切换到laravel时,我希望使用Auth :: attempt 不幸的是,它使用自己的方法来散列密码字符串。我不希望我的所有用户都更改密码,因为我正在切换到laravel,是否可以让Auth类使用md5代替,所以我的用户不必切换密码? :)

如果是,有人可以告诉我怎么做?

2 个答案:

答案 0 :(得分:35)

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'));
    }
}

答案 1 :(得分:0)

不要使用 md5 进行密码散列。甚至 php manual warns 反对它:"Warning It is not recommended to use this function to secure passwords, due to the fast nature of this hashing algorithm."。但在您的情况下,您可以在您的项目中使用以下代码段

    $user = User::where([ 
        'login_id'  => $request->login_id,
        'password'  => md5($request->password)
    ])->first(); 
    
    if ($user) { 
        Auth::login($user); 

        return redirect()->intended('home')->withSuccess('User Signed in');
    }