这是针对具有 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)