2016-09-15 14 views
0

私はLaravel 5.3を使用していますが、make:authを使用して登録/ログインシステムをスキャフォールドしました。私は、ユーザー名とパスワードが一致するDB行に対応しているかどうかをチェックするだけでなく、ログインを確認するための別のパラメータを追加する方法を知りましたか?Laravel 5ログインを確認する別のパラメータを追加します

編集:私はオンラインで見てみましたが、Auth :: Attempt行で変更することができましたが、これらはすべてLaravel 5.2以下のものです。 、私が理解から

use AuthenticatesUsers; 

protected $redirectTo = '/home'; 

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

ミドルウェアRedirectIfAuthenticatedにリダイレクトすることが、そのミドルウェアは、このようなものです::LoginControllerはこれを持って、私は私がカスタムを追加する必要があり、ほぼ確信している

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

に必要なあなたにこれを追加し、その後、のconfig/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'); 
} 

docsで指定されているように、RegisterControllerResetPasswordControllerでも同様に使用できます。

+0

「users」ではなく、別のテーブルから選択するようにクエリを変更することはできますか? –

+0

@AdamSilvaこれはlaravel docsにあります。回答が更新されました。 – Gaurav

関連する問題