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

Laravel 8中Route::filter的替代方案是什么?无需大路由组如何做登录权限控制

解决方案

方案:配置全局Auth中间件排除指定路径

该方案完全不需要调整现有路由结构,也不用把所有路由塞进同一个路由组,仅需两步配置即可实现需求:

  • 第一步:将Auth中间件注册为全局中间件
    打开app/Http/Kernel.php文件,找到$middleware数组,追加认证中间件:
protected $middleware = [
    // 其他原有全局中间件...
    \App\Http\Middleware\Authenticate::class,
];
  • 第二步:配置排除不需要登录的路径
    打开app/Http/Middleware/Authenticate.php文件,定义$except属性,填入不需要登录校验的路径:
protected $except = [
    '/index',
    '/login',
];

注意:如果你的路径存在前缀或需要匹配通配符规则,可直接在$except数组里使用*作为通配符,例如/index/*可匹配所有/index开头的路径。


备选方案:路由组默认追加中间件(不全局注册)

如果不希望把auth中间件注册到全局影响所有请求,可以在路由服务提供者中给web路由默认附加auth中间件:
打开app/Providers/RouteServiceProvider.php,找到web路由的配置部分,修改为:

Route::middleware('web')
    ->middleware('auth') // 追加这行,给所有web路由默认加auth校验
    ->namespace($this->namespace)
    ->group(base_path('routes/web.php'));

然后在routes/web.php中,给index和login两个路由单独跳过auth校验即可:

Route::get('/index', [IndexController::class, 'index'])->withoutMiddleware('auth');
Route::get('/login', [LoginController::class, 'showLoginForm'])->withoutMiddleware('auth');

内容的提问来源于stack exchange,提问作者Iter Ator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:48:04