2016-12-14 5 views
3

Я хочу перестроить свой существующий проект на laravel.Как преобразовать пароль из md5 в метод шифрования laravel

В моей старой системе я храню пароль в md5.

Теперь как я могу преобразовать его в соответствии с методом хэширования laravel для существующего пользователя.

Есть ли какой-либо прямой метод для этого?

ответ

5

Есть ли какой-либо прямой способ для этого? не

Нет нет прямой метод, но вы могли бы достичь, перекрывая postLogin внутри Auth/AuthController.php так он будет проверять, если пароль в формате md5 затем recrypt его с помощью метода Laravel хеширования еще пользователь подключится нормально, как:

public function postLogin(Request $request) 
{ 
    $this->validate($request, [ 
     'login' => 'required', 'password' => 'required', 
    ]); 
    $credentials = $this->getCredentials($request); 

    //Get the user 
    $user = User::where('login', $request->login)->first(); 

    //If Hached by bcrypt 
    if (Auth::attempt($credentials, $request->has('remember'))) 
    { 
     return redirect()->intended($this->redirectPath()); 
    } 
    else //Else if Hached by md5 
    { 
     if($user && $user->password == md5($request->password)) 
     { 
      $user->password = Hash::make($request->password); 
      $user->save(); 

      if($user->authorized){ 
       $user->save(); 

       Auth::login($user); 
      }else 
       Auth::logout(); 
     } 
    } 

    return redirect($this->loginPath()) 
     ->withInput($request->only('login', 'remember')) 
     ->withErrors([ 
      'login' => $this->getFailedLoginMessage(), 
     ]); 
} 

Надеюсь, это поможет.

3

К сожалению, нет.

Единственный способ добиться этого - разработать новое поведение вашего приложения (написанное в laravel), которое позволяет пользователям входить в систему с использованием старых, хешированных паролей md5, а затем принудительно вводить изменения пароля или - потому что вы можете получить пароль пользователей во время login process - сохранить пароль, используя метод хэширования laravels, обновив зарегистрированную модель пользователя.

0

Только пользователь должен изменить свой пароль (так как вы не можете видеть их пароль). Поэтому вы должны отправить ссылку для сброса пароля для них, а затем обновить пароль с помощью метода хэширования Laravel.