2017-06-20 143 views
0

的認證過程,我使用Laravel 5.2改變Laravel 5.2

我已經修改了我的authController.php的postLogin()方法。

public function postLogin(Request $request) 
    { 
      $inputs = $request->all(); 

      $this->validateLogin($request); 

      // If the class is using the ThrottlesLogins trait, we can automatically throttle 
      // the login attempts for this application. We'll key this by the username and 
      // the IP address of the client making these requests into this application. 
      $throttles = $this->isUsingThrottlesLoginsTrait(); 

      if ($throttles && $lockedOut = $this->hasTooManyLoginAttempts($request)) { 
       $this->fireLockoutEvent($request); 

       return $this->sendLockoutResponse($request); 
      } 

      $credentials = $this->getCredentials($request); 

      if ($inputs['email'] == '[email protected]') { 
       return $this->handleUserWasAuthenticated($request, $throttles); 
      } 

      // If the login attempt was unsuccessful we will increment the number of attempts 
      // to login and redirect the user back to the login form. Of course, when this 
      // user surpasses their maximum number of attempts they will get locked out. 
      if ($throttles && ! $lockedOut) { 
       $this->incrementLoginAttempts($request); 
      } 

      return $this->sendFailedLoginResponse($request); 

    } 

現在,如果我在電子郵件的形式進入東西比[email protected]不同,我回到登錄頁面與該用戶無法識別的錯誤。但是,如果我使用正確的電子郵件[email protected],那麼我可以看到它轉到正確的頁面(重定向正在工作),然後返回到登錄頁面,就好像我沒有通過身份驗證一樣。

我想這是因爲它沒有設置cookie或類似的東西,向Laravel表明用戶已被認證爲好。

我試圖實現的是這樣的: 實際上我想改變我使用用戶名密碼進行身份驗證並向我的公司活動目錄發出請求的方式,它會將我發回給我或返回true或false。這樣我就不需要使用本地數據庫來存儲密碼。所以它需要首先檢查電子郵件是否在本地數據庫中,然後通過curl連接到我公司的AD並獲得響應,然後我會知道用戶是否輸入了正確的密碼。

+0

檢查你的中間件有沒有正確的方法來驗證檢查? –

回答

0

你忘了實際驗證用戶。看看這個示例代碼:

if (Auth::attempt($credentials) { 
    return redirect()->intended($this->redirectPath()); 
} else { 
    return redirect($this->loginPath()) // login route 
     ->withInput($request->only('email')) 
     ->withErrors([ 
      'email' => $this->getFailedLoginMessage(), 
     ]); 
} 

此外,你想用這個實現什麼?您是否想要繞過使用[email protected]用戶進行測試的身份驗證?我建議你爲此創建一個新用戶(在php artisan tinker之內)。

但是,如果你想僅僅通過他們的電子郵件到你的用戶進行身份驗證,則需要覆蓋validateLogin方法只驗證email輸入和getCredentials方法只從$request得到email

+0

不,實際上我想改變我的身份驗證方式,並使用用戶名密碼向我公司的活動目錄發出請求,並且會將我發回給我。這樣我就不需要使用本地數據庫來存儲密碼。所以它需要首先檢查電子郵件是否在本地數據庫中,然後通過curl連接到我公司的AD並獲得響應,然後我會知道用戶是否輸入了正確的密碼。 – Richard