場合によっては、ユーザーと管理者を2つの異なるテーブルに分けたいことがあります。
それは良い習慣だと思います。
Laravel5でそれが可能かどうかを探しています。
以下を読む前に、Laravel 5のServiceProvider、Facade、IoCに関する基本的な知識があるはずです。
Laravelのドキュメントによると、ファサード 'Auth'がIlluminate\Auth\AuthManager
魔法の__call()を持つを参照していることがわかります。主要な機能はAuthManagerではなく、にあることがわかります。Illuminate\Auth\Guard
Guardにはプロバイダーがあります。このプロバイダーには$model
プロパティがあり、それに従って、EloquentUserProvider
はによってこのモデルを作成し"new $model"
ます。これらは私たちが知る必要があるすべてです。ここにコードがあります。
1.を作成する必要がありますAdminAuthServiceProvider
。
public function register(){
Auth::extend('adminEloquent', function($app){
// you can use Config::get() to retrieve the model class name from config file
$myProvider = new EloquentUserProvider($app['hash'], '\App\AdminModel')
return new Guard($myProvider, $app['session.store']);
})
$app->singleton('auth.driver_admin', function($app){
return Auth::driver('adminEloquent');
});
}
2.ファサード:
class AdminAuth extends Facade {
protected static function getFacadeAccessor() { return 'auth.driver_admin'; }
}
3.エイリアスをカーネルに追加します。
'aliases' => [
//has to be beneath the 'Auth' alias
'AdminAuth' => '\App\Facades\AdminAuth'
]
これがお役に立てば幸いです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加