Laravel后台仪表盘认证后无法访问受中间件保护页面的问题求助
Laravel后台仪表盘认证后无法访问受中间件保护页面的问题求助
我现在碰到了一个Laravel权限认证的棘手问题:管理员用正确的账号密码登录成功后,本该跳转到受admin中间件保护的仪表盘页面,但实际却被重新导回了登录页。不过如果我把登录后的跳转目标改成一个不受中间件保护的页面,就能正常跳转,说明登录逻辑本身是没问题的,问题大概率出在中间件或者认证守卫的配置环节。
我已经把admin中间件添加到kernel.php里了,下面是我的相关代码,麻烦各位帮我排查一下问题:
路由配置(route/web.php)
Route::group(['middleware'=> ['admin']], function(){ Route::get('dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard'); });
中间件代码(App/Http/Middleware/Admin.php)
class Admin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // 检查用户是否以admin身份认证 if (Auth::guard('admin')->check()) { return $next($request); } // 未通过admin身份认证则跳转登录页 return redirect()->route('admin.login'); } }
认证配置(config/auth.php)
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admins', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App\Models\Admin::class, ], ],
Admin模型代码(App\Models\Admin.php)
class Admin extends Authenticatable { use HasFactory, Notifiable; protected $guard = 'admin'; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', ]; }
控制器登录/登出方法(AdminController.php)
public function login(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::guard('admin')->attempt($credentials)) { return redirect()->intended('/admin/dashboard')->with('ssc', '登录成功.'); } return redirect()->route('admin.login')->with('error', '账号或密码错误.'); } public function logout(Request $request) { Auth::guard('admin')->logout(); $request->session()->invalidate(); return redirect('/admin/login'); }
我已经卡在这里好一阵了,实在找不到问题出在哪,恳请各位大佬帮忙看看,谢谢大家!
备注:内容来源于stack exchange,提问作者DeadXFire
相关产品推荐
相关产品推荐

