Laravel8自定义CheckAdmin中间件$request参数判断失效始终重定向问题
问题原因
- 中间件逻辑错误:无论判断条件是否成立,代码都直接返回了重定向响应,永远不会执行
return $next($request)将请求传递给后续路由/控制器。且当判断$request->user == 'admin'成立时,又重定向到/admin地址,会再次触发该中间件,直接形成无限重定向死循环。 - 参数获取方式不规范:Laravel中
$request->user优先会调用user()方法获取登录用户实例,而非你传递的URL query参数,判断条件永远不成立,自然就会重定向到/about。
修正方案
修改CheckAdmin.php中间件的handle方法逻辑即可:
public function handle(Request $request, Closure $next) { // 明确获取URL query参数中的user值 if($request->query('user') == 'admin'){ // 验证通过,将请求传递给Admin控制器 return $next($request); } // 验证不通过重定向到about页 return redirect('/about'); }
内容的提问来源于stack exchange,提问作者Thee
相关产品推荐
相关产品推荐

