Laravel Admin中间件失效:登录后无法跳转至admin/dashboard
Laravel管理员中间件重定向异常排查修复
数据库用户roll_as字段值为1,使用管理员账号登录后,本该跳转到admin/dashboard,却被中间件重定向到/home页面,核心问题及修复方案如下:
核心问题:中间件逻辑运算符优先级错误
你的AdminMiddleware判断逻辑存在语法问题:!Auth::user()->roll_as == '1' 中逻辑非(!)的优先级高于等于(==),实际执行顺序是先对Auth::user()->roll_as取反,再和'1'比较,导致管理员用户也会被判定为非管理员,触发重定向。
修复后的AdminMiddleware代码
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; use Illuminate\Support\Facades\Auth; class AdminMiddleware { /** * Handle an incoming request. * * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ public function handle(Request $request, Closure $next): Response { // 用括号修正运算符优先级,或直接判断不等于1 if(Auth::user()->roll_as != '1'){ return redirect('/home')->with('status','Access Denied Because You Are Not Admin, This Access Is Only For Admin'); } return $next($request); } }
其他潜在问题修复
- LoginController错误的引用路径
你在LoginController中引入了错误的中间件路径:
use Illuminate\App\Http\Middleware\Authenticate;
需改为:
use App\Http\Middleware\Authenticate;
若未直接使用该中间件,也可直接删除此行。
- 拼写错误修正
- 提示信息中的
Becouse改为Because,Welocome改为Welcome,Succesfully改为Successfully - 确认数据库字段
roll_as是否为笔误(常规权限字段为role_as),若为笔误需统一修改代码与数据库字段名
验证步骤
- 清除Laravel缓存确保修改生效:
php artisan cache:clear php artisan route:clear php artisan config:clear
- 使用管理员账号重新登录,确认是否正常跳转到
admin/dashboard
内容的提问来源于stack exchange,提问作者TechErrorNR
相关产品推荐
相关产品推荐

