質問したいこと
マルチ認証の実装をしており、バージョンは6.18.13を使用しています。
UserとAdminに分けて作成していて、今はUSerを作成しています。
作成していくとログイン画面にアクセスした際にリダイレクトが止まらなくなってしまいどこを改善すれば治るのか分からず質問させてだきました。
エラー
このページは動作していませんlocalhost でリダイレクトが繰り返し行われました。 Cookie を消去してみてください. ERR_TOO_MANY_REDIRECTS
ルート
+--------+----------+-------------+-------------+--------------------------------------------------------------+---------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+-------------+-------------+--------------------------------------------------------------+---------------+ | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | user | user.login | App\Http\Controllers\User\Auth\LoginController@showLoginForm | web,auth:user | | | GET|HEAD | user/home | home | App\Http\Controllers\User\HomeController@index | web,auth:user | | | POST | user/login | | App\Http\Controllers\User\Auth\LoginController@login | web,auth:user | | | POST | user/logout | user.logout | App\Http\Controllers\User\Auth\LoginController@logout | web | +--------+----------+-------------+-------------+--------------------------------------------------------------+---------------+
ディレクトリ構成
├── Admin │ ├── Auth │ │ ├── ConfirmPasswordController.php │ │ ├── ForgotPasswordController.php │ │ ├── LoginController.php │ │ ├── RegisterController.php │ │ ├── ResetPasswordController.php │ │ └── VerificationController.php │ └── HomeController.php ├── Controller.php └── User ├── Auth │ ├── ConfirmPasswordController.php │ ├── ForgotPasswordController.php │ ├── LoginController.php │ ├── RegisterController.php │ ├── ResetPasswordController.php │ └── VerificationController.php └── HomeController.php
コード
web.php
// 認証なし Route::group(['namespace' => 'User', 'prefix' => 'user'], function () { Route::get('/', 'Auth\LoginController@showLoginForm')->name('user.login'); Route::post('login', 'Auth\LoginController@login'); Route::post('logout', 'Auth\LoginController@logout')->name('user.logout'); }); // 認証あり Route::group(['prefix' => 'user', 'middleware' => 'web'], function () { Route::get('/home', 'User\HomeController@index')->name('home'); });
LoginController.php
use AuthenticatesUsers; protected $redirectTo = RouteServiceProvider::HOME; public function __construct() { $this->middleware('auth:user')->except('logout'); } public function showLoginForm() { return view('auth.login'); } protected function guard() { return Auth::guard('user'); }
RouteServiceProvider.php
〜省略〜 public const HOME = '/user/home'; public const ADMIN_HOME = '/admin/home';
Authenticate.php
class Authenticate extends Middleware { protected $user_route = 'user.login'; protected $admin_route = 'admin.login'; protected function redirectTo($request) { if (! $request->expectsJson()) { if (Route::is('user.*')) { return route($this->user_route); } elseif (Route::is('admin.*')) { return route($this->admin_route); } } } }
RedirectIfAuthenticated.php
public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check() && $guard === 'user') { return redirect(RouteServiceProvider::HOME); } elseif (Auth::guard($guard)->check() && $guard === 'admin') { return redirect(RouteServiceProvider::ADMIN_HOME); } return $next($request); }
ConfirmPasswordController.php
use ConfirmsPasswords; protected $redirectTo = RouteServiceProvider::HOME; public function __construct() { $this->middleware('auth'); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/12 18:19