You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:39:31