既存のプロジェクトをlaravelに再開発したい。パスワードをmd5からlaravelの暗号化方法に変換する方法
私の古いシステムでは、パスワードをmd5に保存しています。
今、どのように私はそれをlaravelハッシュ法に従って既存のユーザに変換できますか?
直接行う方法はありますか?
既存のプロジェクトをlaravelに再開発したい。パスワードをmd5からlaravelの暗号化方法に変換する方法
私の古いシステムでは、パスワードをmd5に保存しています。
今、どのように私はそれをlaravelハッシュ法に従って既存のユーザに変換できますか?
直接行う方法はありますか?
直接行う方法はありますか?
なしに直接的な方法はありませんが、あなたは、ユーザーは次のように、正常に接続し、パスワードが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(),
]);
}
これが役に立ちます。
残念ながら、
これを実現する唯一の方法は、ユーザーが古いmd5ハッシュされたパスワードを使用してログインできるようにして、パスワードの変更を強制する、アプリケーションの新しい動作(laravelで記述)を開発することです。ログインプロセス - ログされたユーザーモデルを更新して、laravelsのハッシュ方法を使用してパスワードを保存します。
ユーザーはパスワードを変更する必要があります(パスワードが表示されないため)。だからあなたは彼らのためのリセットパスワードのリンクを送信し、Laravelハッシュメソッドを使用してパスワードを更新する必要があります。