2015-10-28 29 views
1

我正在開發一個Web應用與Laravel 5.1和我建立了認證系統,我要檢查,如果在半年內用戶並沒有改變他的密碼或更多,我會用一箇中間件來檢查,但我沒有找到如何正確地做到這一點。我創建了一個全局中間件,但它不起作用,因爲我無法獲取經過身份驗證的用戶。Laravel 5.1中間件從用戶檢查創建日期更改密碼

這可能是我必須使用AfterMiddleware檢查密碼?

回答

0

當你想用戶強制更改密碼先解釋一下/狀態? 認證時或認證成功後? 那麼我可以給你解決

+0

進行身份驗證時,因爲我想獲得用戶重定向到重置密碼的看法,但我需要知道它是一個有效的用戶。 – xmarston

0

然後,您需要覆蓋的方法postLogin在AuthController

公共職能postLogin(請求$要求){

$credentials = ['email' => $request->email, 'password' => $request->password]; 

    if (Auth::attempt($credentials, $request->has('remember'))) { 

     if((strtotime(Auth::user()->created_at) < strtotime('6 month ago'))){ 
     return redirect('your-reset-path);//redirect to password reset page 
     }else{ 
     return redirect()->intended('/'); 
     } 

    } 

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

,如果你想這將做的工作來檢查created_at,但是您更願意使用帶有時間戳(last_password_updated)的另一個字段,該字段只會在更改密碼時以及第一次創建時更新,效率更高。

+0

嗯,這是我在做的第一個地方,但後來我認爲,如果用戶輸入另一個URL應用程序必須檢查密碼是否更改,不僅在postLogin函數,因爲用戶可以有另一個URL在瀏覽器歷史記錄,並檢查記住我的按鈕。 – xmarston