質問: Laravel5.0でログインを必要とするページを作っています。 管理ユーザー(Admin)と一般ユーザー(User)が存在し、構造や用途も大きく異なるため別のテーブルに分けました。 Userのログインには標準のeloquentドライバーを用いた認証機能を少し改造(ログインIDで認証)して利用しています。 今回、新しく管理ユーザー専用の認証ドライバーのようなものを作り、特定のページではAdminとしてログインするようにしたいと考えています。 認証はmiddlewareで行っており、Userの認証は各ページコントローラーのコンストラクタで次のようにして認証の必要なページを指定しています。 ``` public function __construct() { $this->middleware('auth'); } ``` Adminの認証も同様に次の形を取ろうと考えています。 ``` public function __construct() { $this->middleware('admin-auth'); } ``` ひとまず「App\Http\Middleware\Authenticate.php」をコピーした「AdminAuthenticate.php」を作りKernel.phpに登録するところまで行いました。 おそらくconfig/app.phpに「App\Providers\AdminAuthServiceProvider」のようなものを追記してその中でAuthを拡張していくのかと推測していますが具体的な方法がわかりません。 eloquentとは別の認証ドライバを新しく作って切り替えられるようにするのでしょうか? 良い方法がございましたら教えて下さい。
回答: App\Http\Kernel.php内の $routeMiddleware に設定するだけで利用出来ませんでしょうか。 ``` protected $routeMiddleware = [ 'admin-auth' => 'App\Http\Middleware\AdminAuthenticate', ]; ``` 当方では同じようにadmin権限、ユーザ権限のような管理をしておりますが、usersテーブル内でroleフィールドを設定し、数値によって権限を切り分けており、認証に関しましては上記で問題なく動作しております。 Nuagesさんが構築されたような異なるテーブルでの管理は行っておりませんため、検証ができておりませんが、ご了承ください。