我想重新開發我的現有項目到laravel。如何將密碼從md5轉換成laravel加密方法
在我的舊系統中,我將密碼存入md5。
現在如何根據現有用戶的laravel散列方法對其進行轉換。
有沒有直接的方法來做到這一點?
我想重新開發我的現有項目到laravel。如何將密碼從md5轉換成laravel加密方法
在我的舊系統中,我將密碼存入md5。
現在如何根據現有用戶的laravel散列方法對其進行轉換。
有沒有直接的方法來做到這一點?
有沒有直接的方法來做到這一點?
沒有沒有直接的方法,但你可以做到這一點通過重寫postLogin
內Auth/AuthController.php
所以它會檢查,如果密碼是md5
格式,然後用別的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(),
]);
}
希望這會有所幫助。
不幸的是沒有。
實現它的唯一方法是開發應用程序的新行爲(寫在laravel中),它允許用戶使用舊的md5哈希密碼登錄,然後強制更改密碼或 - 因爲您可以在過程中獲取用戶密碼登錄過程 - 通過更新記錄的用戶模型使用laravels哈希方法存儲密碼。
只有用戶應該更改他的密碼(因爲你看不到他們的密碼)。所以你應該爲它們發送重置密碼鏈接,然後用Laravel哈希方法更新密碼。