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

使用hesto/multi-auth时RedirectIfAdmin中间件持续触发跳转如何解决

问题原因

  1. 中间件用途匹配错误
    RedirectIfAdmin 属于访客类中间件,设计初衷是限制已登录的管理员访问登录页、忘记密码页等无需认证的公开路由,核心逻辑为已通过admin guard登录则强制跳转仪表盘。你当前错误将该中间件绑定到了需要登录后才可访问的 /myapp 业务路由组下,导致已登录状态下访问该组所有路由都会触发跳转规则。
  2. 路由组中间件配置错误
    你提供的 /myapp 路由组没有显式绑定认证中间件,结合现象可以判断该路由组被全局绑定了 RedirectIfAdmin 中间件,常见于hesto/multi-auth生成的默认路由配置错误,或是 RouteServiceProvider 中加载admin路由时错误附加了该中间件。

解决方案

1. 调整中间件绑定范围

仅为公开访客路由(如管理员登录页、重置密码页)绑定 RedirectIfAdmin 中间件,示例配置:

// 仅公开访客路由绑定RedirectIfAdmin
Route::group(['prefix' => '/myapp', 'middleware' => 'RedirectIfAdmin:admin'], function () {
    Route::get('login', [AdminLoginController::class, 'showLoginForm'])->name('myapp.login');
    // 其他无需登录即可访问的admin路由
});

2. 给业务路由绑定正确的认证中间件

/myapp 下的所有需要登录的业务路由,绑定hesto/multi-auth生成的admin认证中间件 auth:admin 即可,不要附加 RedirectIfAdmin 中间件:

Route::group([
    'prefix' => '/myapp', 
    'as'=>'myapp.', 
    'middleware' => 'auth:admin' // 仅加认证中间件即可
], function () {
    // 仪表盘路由
    Route::get('dashboard', function () {
        return view('admin.dashboard');
    })->name('dashboard');
    // 用户资源路由
    Route::resources([
        'user' => '\App\Http\Controllers\UserController'
    ]);
});

3. 校验全局中间件配置

检查 app/Providers/RouteServiceProvider.php 中admin路由的加载逻辑,以及 app/Http/Kernel.php 的中间件组配置,确认RedirectIfAdmin没有被错误加入web全局中间件组或admin业务路由的默认中间件列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:45:00