2016-03-30 35 views
1

どのようにして顧客の認証システムを構築できますか?laravelでカスタム認証システムを作成する

laravel私のadminパネル用の認証システムに組み込まれています。ここでは、組み込みユーザーモデルとユーザーテーブルが既に使用されています。

今私は顧客モデルと顧客テーブルが使用される私の顧客のための別の認証システムを構築したいと思います。

どうすればいいですか?laravel 5.2

+1

を使用する必要が多分これは、あなたが探しているものを、次のとおりです。http: //stackoverflow.com/questions/34490600/how-to-use-multi-auth-in-laravel-5-2 – mauricehofman

+0

ありがとうございます、私はこれに基づいて作業しています。 –

答えて

0

Larvel 5.2でのマルチ認証の実装方法

上記のとおりです。 2つのテーブル管理者とユーザー

Laravel 5.2には新しい職人コマンドがあります。

PHPの職人メイク:

AUTHそれはユーザー表のルート、ビューとコントローラを登録/基本的なログインを生成します。

簡略化のため、管理表をユーザー表として作成してください。

Controller For Admin 
app/Http/Controllers/AdminAuth/AuthController 
app/Http/Controllers/AdminAuth/PasswordController 

(注:私はちょうどここにアプリ/ HTTP /コントローラ/認証/ AuthControllerからこれらのファイルをコピーした)

config/auth.php 

//Authenticating guards 
'guards' => [ 
    'user' =>[ 
     'driver' => 'session', 
     'provider' => 'user', 
    ], 
    'admin' => [ 
     'driver' => 'session', 
     'provider' => 'admin', 
    ], 
], 

//User Providers 
'providers' => [ 
    'user' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
    ], 
    'admin' => [ 
     'driver' => 'eloquent', 
     'model' => App\Admin::class, 
    ] 
], 

//Resetting Password 
'passwords' => [ 
    'clients' => [ 
     'provider' => 'client', 
     'email' => 'auth.emails.password', 
     'table' => 'password_resets', 
     'expire' => 60, 
    ], 
    'admins' => [ 
     'provider' => 'admin', 
     'email' => 'auth.emails.password', 
     'table' => 'password_resets', 
     'expire' => 60, 
    ], 
], 
route.php 

Route::group(['middleware' => ['web']], function() { 
    //Login Routes... 
    Route::get('/admin/login','AdminAuth\[email protected]'); 
    Route::post('/admin/login','AdminAuth\[email protected]'); 
    Route::get('/admin/logout','AdminAuth\[email protected]'); 

    // Registration Routes... 
    Route::get('admin/register', 'AdminAuth\[email protected]'); 
    Route::post('admin/register', 'AdminAuth\[email protected]'); 

    Route::get('/admin', '[email protected]'); 

}); 



AdminAuth/AuthController.php 

2つのメソッドを追加し、$ redirectToを指定し、$

protected $redirectTo = '/admin'; 
protected $guard = 'admin'; 
public function showLoginForm() 
{ 
    if (view()->exists('auth.authenticate')) { 
     return view('auth.authenticate'); 
    } 

    return view('admin.auth.login'); 
} 
public function showRegistrationForm() 
{ 
    return view('admin.auth.register'); 
} 
it will help you to open another login form for admin 

creating a middleware for admin 

class RedirectIfNotAdmin 
{ 
/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @param string|null $guard 
* @return mixed 
*/ 
public function handle($request, Closure $next, $guard = 'admin') 
{ 
    if (!Auth::guard($guard)->check()) { 
     return redirect('/'); 
    } 

    return $next($request); 
} 
} 

register middleware in kernel.php 

protected $routeMiddleware = [ 
    'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class, 
]; 
use this middleware in AdminController e.g., 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Auth; 

class AdminController extends Controller 
{ 
    public function __construct(){ 
     $this->middleware('admin'); 
    } 
public function index(){ 
     return view('admin.dashboard'); 
    } 
} 
を守ります

これは、認証された管理者の使用のjsonを得るためにも必要です。

Auth::guard('admin')->user() 

編集 - 1 私たちは、直接 認証を使用して認証されたユーザーにアクセスすることができます::ユーザー()が、あなたは2つの認証テーブルを持っているならば、あなたは

Auth::guard('guard_name')->user() 
for logout 

Auth::guard('guard_name')->user()->logout() 
for authenticated user json 

Auth::guard('guard_name')->user()