2016-12-11 71 views
0

如何使用getLastAttempted()在laravel 5.3?如何使用`getLastAttempted()`在laravel 5.3?

$user = auth()->getLastAttempted(); 
    dd($user); 

    if (!$user->activated) { 
     return redirect('/login')->with('status', 'This account has not been activated.'); 
    } 

我想檢查用戶activated或不登錄時(有一個在users一個activated場表), 我添加上述代碼login()方法下面的\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php

如下:

public function login(Request $request) 
    { 
     $this->validateLogin($request); 


     if ($this->hasTooManyLoginAttempts($request)) { 
      $this->fireLockoutEvent($request); 

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

// start 
    $user = auth()->getLastAttempted(); 
     dd($user); 

     if (!$user->activated) { 
      return redirect('/login')->with('status', 'This account has not been activated.'); 
     } 
    //end  

     if ($this->attemptLogin($request)) { 
      return $this->sendLoginResponse($request); 
     } 


     $this->incrementLoginAttempts($request); 

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

dd($user);的結果爲空。

我該做什麼?

回答

0

您可以覆蓋validateLogin功能:

$this->validate($request, [ 
     $this->username() => 'required|exists:users,' . $this->username() . ',activated,1', 
     'password' => 'required', 
    ]); 
1

那豈不是更有意義的把你的代碼塊的if else語句裏面?

public function login(Request $request) 
    { 
     $this->validateLogin($request); 


     if ($this->hasTooManyLoginAttempts($request)) { 
      $this->fireLockoutEvent($request); 

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

     if ($this->attemptLogin($request)) { 

      // start 
      $user = \Auth::user(); 
      dd($user); 

      if (!$user->activated) { 
       //instead of redirecting, increment attempts and send failed response 
       $this->incrementLoginAttempts($request); 
       return $this->sendFailedLoginResponse($request); 
      }else{ 
       return $this->sendLoginResponse($request); 
      } 
      //end  


     } 



     $this->incrementLoginAttempts($request); 

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