前提・実現したいこと
laravel5.5にてマルチログインを実装したい
発生している問題・エラーメッセージ
Users以外に使いたいAdmin(管理者ログイン)ページからログインしようとすると下記のようなメッセージが表示されます
http://local.test_app/admin/login
These credentials do not match our records.
該当のソースコード
ルート
Auth::routes(); //1) User 認証不要 Route::get('/', function () { return redirect('/home'); }); //2) User ログイン後 Route::group(['middleware' => 'auth:user'], function() { Route::get('/home', 'HomeController@index')->name('home'); }); //3) Admin 認証不要 Route::group(['prefix' => 'admin'], function() { Route::get('/', function () { return redirect('/admin/home'); }); Route::get('login', 'Admin\LoginController@showLoginForm')->name('admin.login'); Route::post('login', 'Admin\LoginController@login'); }); //4) Admin ログイン後 Route::group(['prefix' => 'admin', 'middleware' => 'auth:admin'], function() { Route::post('logout', 'Admin\LoginController@logout')->name('admin.logout'); Route::get('home', 'Admin\HomeController@index')->name('admin.home'); });
Admin.php
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; class Admin extends Authenticatable { use Notifiable; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; }
config/auth
<?php return [ 'defaults' => [ 'guard' => 'user', 'passwords' => 'users', ], 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], 'user' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ], ], 'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], 'admins' => [ 'provider' => 'admins', 'table' => 'password_resets', 'expire' => 60, ], ], ];
Admin/LoginController
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class LoginController extends Controller { use AuthenticatesUsers; protected $redirectTo = '/admin/home'; public function __construct() { $this->middleware('guest:admin')->except('logout'); } public function showLoginForm() { return view('admin.login'); } protected function guard() { return Auth::guard('admin'); } public function logout(Request $request) { Auth::guard('admin')->logout(); $request->session()->flush(); $request->session()->regenerate(); return redirect('/admin/login'); } }
Admin/HomeController
<?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class HomeController extends Controller { public function __construct() { $this->middleware('auth:admin'); } public function index() { return view('admin.home'); } }
Viewはadminディレクトリを新たに作りそこに既存のログインページとHomeページをコピーしRouteの部分をadmin.xxxxxに変更してあります
試したこと
ガードの付け忘れかとも思ったのですが、上記の設定で問題ないように思えました。自分ひとりではどうにも手詰まりなのでここは確認したのか?この設定はどうなっているかなど何かコメント・ご指摘いただければと思います。
補足情報(FW/ツールのバージョンなど)
laravel5.5
php 7
homestead
mysql
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/08 05:21