小编use*_*606的帖子

为什么InitializeTenancyByDomain不适用于登录过程?

这是针对具有 Stancl/Tenancy 的 Jetstream/Livewire 脚手架的 Laravel 8.x。租户模型或会话设置的初始化无法正常工作。要么是我没有做对,要么是内在的问题。

整个包是按照 Stencl/tenancy v3.x 的说明构建的。我可以按照下面概述的代码看到 dd(\App\User::all())

Route::middleware([ 
        'web',
        InitializeTenancyByDomain::class,
        PreventAccessFromCentralDomains::class,     
])->group(function (){
    
Route::get('/', function () { 
   dd(\App\User::all()); //can see all users models in tenants table
   return view('welcomeTenant'); 
});

Route::get('/home', [
    'middleware'  => ['auth'],
    'uses' => '\App\Http\Controllers\HomeController@index'
])->name('home');
                
});
Run Code Online (Sandbox Code Playgroud)

这对我来说意味着 InitializeTenancyByDomain 是对的。

当从租户的域请求登录表单时,例如。从 rtbs.example.in 来看,加密的会话/cookie 信息未存储在租户的会话表(即 rtbs.sessions)中。当发布登录表单时,它会在中央域(example.in)中查找用户表,其中不存在用户表,因此central.users表不存在错误。结果我收到 419 错误。我暂时禁用了 csrf 令牌验证来识别此问题。

这就是问题所在。为什么InitializeTenancyByDomain不适用于登录过程?我的基本设置有问题吗?有趣的是, dd(\App\User::all()) 如果出现在其他地方,即如下所示

Route::middleware([ 
        'web',
        InitializeTenancyByDomain::class,
        PreventAccessFromCentralDomains::class,     
])->group(function (){
    
dd(\App\User::all()); //central-domain.users does not exist error

Route::get('/', function () { 
    return view('welcomeTenant'); 
});

Route::get('/home', [ …
Run Code Online (Sandbox Code Playgroud)

middleware routes multi-tenant laravel

5
推荐指数
2
解决办法
5380
查看次数

标签 统计

laravel ×1

middleware ×1

multi-tenant ×1

routes ×1