gpt4 book ai didi

php - Laravel 的中间件顺序(Middleware Priority)。使用 Postgres 的 Multi-Tenancy

转载 作者:行者123 更新时间:2023-11-29 12:32:35 31 4
gpt4 key购买 nike

web.php 中,我在中间件中切换了 Postgres 模式,因为发出了 HTTP 请求的子域类型。这样:

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

select-schema 中间件中,我做了这样的事情。这工作正常。 (别担心)

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

我的主要问题是:我为 public 架构和任何 individual tenant 使用了不同的 migrations。在 individual tenant 中,我有 users 表。我一登录就弹出这个错误。

SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "users" does not exist

主要问题是

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

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

我如何订购? select-schema 然后是 auth

最佳答案

我找到了解决方案,为此,App\Kernel 中有一个名为 $middlewarePriority 的东西。

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

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

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

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

关于php - Laravel 的中间件顺序(Middleware Priority)。使用 Postgres 的 Multi-Tenancy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487764/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com