2017-10-12 13 views
0

に他のテーブルから認証しますユーザー。私は、コントローラのフォルダ/var/www/html/projecy_name/app/Http/ControllersStaffように、1人のフォルダ名を作成し、名前SessionsController.phpで1コントローラーを作成し、ここにそのファイルの内容です:店()関数では、私は以下のようにアプリケーションのユーザー</strong>の<strong>3種類がありLaravel 5.4

<?php 

namespace App\Http\Controllers\Staff; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
use App\Staff; 

class SessionsController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('guest',['except'=>'destroy']); 
    } 

    public function create() 
    { 
     return view('staffsession.create'); 
    } 

    public function store() 
    { 
     echo request("email"); 
     $test = auth()->attempt(request(['email','password'])); 
     dd($test); 
     if(!auth()->attempt(request(['email','password']))) 
     { 
      Request()->session()->flash('error_msg', 'Please check your credentials and try again.'); 
      return back()->withErrors([ 
       'message' => 'Please check your credentials and try again.' 
      ]); 
     } 

     return redirect()->home(); 
    } 

    public function destroy() 
    { 
     auth()->logout(); 
     return redirect()->home(); 
    } 
} 
?> 

が、デフォルトでチェックインしようとしていますadmins テーブルですが、私はtbl_staffテーブルをチェックインする必要があります。

どのように達成するには?

答えて

1

\config\auth.phpファイルに新しいガードとプロバイダを定義する必要があります。

'guards' => [ 
    'web' => [ 
     'driver' => 'session', 
     'provider' => 'users', 
    ], 

    'staff' => [ 
     'driver' => 'session', 
     'provider' => 'staff', 
    ], 

    'api' => [ 
     'driver' => 'token', 
     'provider' => 'users', 
    ], 
], 


'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
    ], 

    'staff' => [ 
     'driver' => 'database', 
     'table' => 'tbl_staff', 
    ], 
], 

その後、新しいプロバイダで新しいGuardインスタンスを作成する必要があります。認証のために新しいテーブルを使用します。

置きログインコントローラへguard()方法:

use Illuminate\Support\Facades\Auth; 

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

更新:

あなたはそれが動作するように、異なったあなたのメソッドを使用する必要があります。 auth()メソッドの代わりにguard()メソッドを使用するのは、デフォルトのガードを使用するためです。参照:

<?php 

namespace App\Http\Controllers\Staff; 

use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 
use App\Staff; 
use Illuminate\Support\Facades\Auth; 

class SessionsController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('guest',['except'=>'destroy']); 
    } 

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

    public function create() 
    { 
     return view('staffsession.create'); 
    } 

    public function store() 
    { 
     if(!$this->guard()->attempt(request(['email','password']))) 
     { 
      Request()->session()->flash('error_msg', 'Please check your credentials and try again.'); 
      return back()->withErrors([ 
       'message' => 'Please check your credentials and try again.' 
      ]); 
     } 

     return redirect()->home(); 
    } 

    public function destroy() 
    { 
     auth()->logout(); 
     return redirect()->home(); 
    } 
} 
+0

私はまだそれがデフォルトのテーブルで –

+0

溶液とするためにチェックしてみましょう私の更新の答えOK –

+0

@PathikVejaniをチェックしている –

関連する問題