2016-09-15 31 views
0

我使用Laravel 5.3,並使用make:auth來支持註冊/登錄系統。我想知道如何添加另一個參數來檢查登錄,除了檢查用戶名和密碼是否與匹配的DB行對應?Laravel 5添加另一個參數以檢查登錄

編輯:我試着在網上找,我發現我可以改變它在Auth ::嘗試線,但這些都是Laravel 5.2及以下。該LoginController中有這樣的:

use AuthenticatesUsers; 

protected $redirectTo = '/home'; 

public function __construct() 
{ 
    $this->middleware('guest', ['except' => 'logout']); 
} 

據我瞭解,重定向到中間件RedirectIfAuthenticated,但隨後即中間件是這樣的:

public function handle($request, Closure $next, $guard = null) 
{ 
    if (Auth::guard($guard)->check()) { 
     return redirect('/home'); 
    } 

    return $next($request); 
} 

我幾乎可以肯定我一定要添加自定義但即使是我在網上看到的文檔,這也有點令人困惑......任何人都有一個鏈接可以很好地解釋這個問題嗎?或者可能是一個示例代碼?

+0

@AndyHolmes我編輯了帖子 –

回答

2

是的,你可以通過在你的LoginController.php覆蓋一個AuthenticatesUserscredentials()方法做

use Illuminate\Http\Request; 

protected function credentials(Request $request) 
{ 
    $credentials = $request->only($this->username(), 'password'); 
    $credentials['active'] = 1; 

    return $returnArray; 
} 

這個例子是最常見的情況,其中,如果他的帳戶是活躍用戶只能登錄。


如果你想使用的,而不是users其他表,你需要customize guard

添加一個在配置/ auth.php

'guards' => [ 
    'user' => [ 
     ... 
    ], 
    'customer' => [ 
     'driver' => 'session', 
     'provider' => 'customers', 
    ], 
], 

... 

'providers' => [ 
    'users' => [ 
     ... 
    ], 
    'customers' => [ 
     'driver' => 'eloquent', 
     'model' => App\Customer::class, 
    ], 
], 

,然後在添加此您LoginController.php

use Illuminate\Support\Facades\Auth; 

protected function guard() 
{ 
    return Auth::guard('customer'); 
} 

按照文檔中的說明,您也可以在RegisterControllerResetPasswordController中同樣使用。

+0

但是我可以在哪裏更改查詢以從另一個表中選擇而不是'users'? –

+0

@AdamSilva它在laravel文檔。答案已更新。 – Gaurav