2016-12-14 31 views

答えて

5

直接行う方法はありますか?

なしに直接的な方法はありませんが、あなたは、ユーザーは次のように、正常に接続し、パスワードがmd5形式の場合Auth/AuthController.php内部postLoginをオーバーライドすることにより、それがチェックすることを達成するため、他のlaravelハッシュ方法でそれをrecryptできます

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

残念ながら、

これを実現する唯一の方法は、ユーザーが古いmd5ハッシュされたパスワードを使用してログインできるようにして、パスワードの変更を強制する、アプリケーションの新しい動作(laravelで記述)を開発することです。ログインプロセス - ログされたユーザーモデルを更新して、laravelsのハッシュ方法を使用してパスワードを保存します。

0

ユーザーはパスワードを変更する必要があります(パスワードが表示されないため)。だからあなたは彼らのためのリセットパスワードのリンクを送信し、Laravelハッシュメソッドを使用してパスワードを更新する必要があります。

関連する問題