我已经按照本教程中的描述设置了一个管理员身份验证防护: Laravel Multiple Auth TutorialRoutesRoute::group([ 'prefix' => 'admin', 'namespace' => 'Auth'], function() { Route::get('/login', 'AdminController@showLogin')->name('admin.show.login'); Route::post('/login', 'AdminController@login')->name('admin.login'); Route::group([ 'middleware' => 'auth:admin' ], function() { Route::get('/', 'AdminController@index')->name('admin.home'); Route::get('/logout', 'AdminController@logout'); }); });控制器class AdminController extends Controller{ public function __construct() { $this->middleware('guest:admin')->except('logout'); } public function index() { return "Admin authenticated"; } public function showLogin() { return view('admin.login'); } public function login(Request $request) { $admin = Admin::where('login_id', $request->input('login'))->firstOrFail(); Auth::guard('admin')->loginUsingId($admin->id, TRUE); return redirect()->intended(route('admin.home')); } public function logout() { Auth::guard('admin')->logout(); return redirect()->route('admin.show.login'); }}RedirectIfAuthenticated 中间件public function handle($request, Closure $next, $guard = null){ switch ($guard) { case 'admin': if (Auth::guard($guard)->check()) { return redirect()->route('admin.home'); } break; default: if (Auth::guard($guard)->check()) { return redirect('/home'); } break; } return $next($request);}异常处理程序protected function unauthenticated($request, AuthenticationException $exception) { if ($request->expectsJson()) { return response()->json(['error' => 'Unauthenticated.'], 401); }当/admin没有在洛被访问时,所述/admin/login视图是正确。登录后,/adminURL 导致无限重定向循环错误。管理员可以使用/admin/logout路由成功注销。问题似乎是RedirectIfAuthenticated中间件的原因。我错过了什么吗?
1 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
似乎您的问题发生在AdminController
,特别是构造函数中。
重定向循环发生在路由上,/admin
因为中间件与auth:admin
中间件(在路由中)和guest:admin
中间件(在控制器中)发生冲突。
你想要的是将guest:admin
中间件应用于所有的 exceptindex
和logout
函数:
$this->middleware('guest:admin', ['except' => ['index', 'logout']]);
- 1 回答
- 0 关注
- 195 浏览
添加回答
举报
0/150
提交
取消