Laravel 的中间件顺序(Middleware Priority)。使用 Postgres 的多租户
问题:Laravel 的中间件顺序(Middleware Priority)。使用 Postgres 的多租户 在 web.php 中,我在中间件中切换了 Postgres 模式,因为 HTTP 请求的子域类型已被发出。这边走: Route::group( [ 'domain' => '{tenant}.' . config('app.url'), 'middleware' => 'select-
·
问题:Laravel 的中间件顺序(Middleware Priority)。使用 Postgres 的多租户
在 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]:未定义表:7 错误:关系“用户”不存在
主要问题是
$this->get('/', 'HomeController@index')->middleware('auth');
该模型运行良好,但中间件auth
先于select-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
更多推荐
已为社区贡献19918条内容
所有评论(0)