2016-12-14 123 views

回答

5

有沒有直接的方法來做到這一點?

沒有沒有直接的方法,但你可以做到這一點通過重寫postLoginAuth/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(), 
     ]); 
} 

希望這會有所幫助。

3

不幸的是沒有。

實現它的唯一方法是開發應用程序的新行爲(寫在laravel中),它允許用戶使用舊的md5哈希密碼登錄,然後強制更改密碼或 - 因爲您可以在過程中獲取用戶密碼登錄過程 - 通過更新記錄的用戶模型使用laravels哈希方法存儲密碼。

0

只有用戶應該更改他的密碼(因爲你看不到他們的密碼)。所以你應該爲它們發送重置密碼鏈接,然後用Laravel哈希方法更新密碼。