Laravel 中间件的顺序(Middleware Priority)。使用 Postgres 的多租户

2023-12-03

In web.php当发出 HTTP 请求的子域类型时,我已经在中间件中切换了 Postgres 架构。这边走:

Route::group(
    [
        'domain'     => '{tenant}.' . config('app.url'),
        'middleware' => 'select-schema'
    ],
    function () {
        $this->get('/', 'HomeController@index')->middleware('auth');
    }
);

In 选择模式中间件,我做了这样的事情。这工作正常。 (不用担心)

DB::select('SET search_path TO ' . {tenant});

我的主要问题是:我有不同migrations for public模式和对于任何individual tenant. In individual tenant I have users桌子。我一登录就弹出这个错误。

SQLSTATE[42P01]:未定义的表:7错误:关系“用户”不存在

主要问题是

$this->get('/', 'HomeController@index')->middleware('auth');

该模型运行良好,但中间件auth先执行之前select-schema

我该如何订购? select-schema then auth


我已经找到解决办法了 为此,有一种东西叫做$middlewarePriority in App\Kernel.

添加这个可以帮助我解决问题。

/**
 * Responsible for prioritizing the middleware
 *
 * @var array
 */
protected $middlewarePriority = [
    \App\Http\Middleware\SwitchSchema::class,
];

我从这个链接得到了解决方案。

https://github.com/laravel/framework/issues/19565

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 中间件的顺序(Middleware Priority)。使用 Postgres 的多租户 的相关文章

随机推荐