我正在本地主机环境中使用Laravel 5.7.28,Hyn / Multi-tenant 5.3在php中开发多租户应用程序。按照旧教程,使用force.tenancy中间件强制执行租用连接。数据库连接(config / database.php)如下所示:(省略不需要的行)
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
'system' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'tenancy'),
'username' => env('DB_USERNAME', 'xxxx'),
'password' => env('DB_PASSWORD', 'xxxxx'),
......
],
'tenant' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '914fb6c2sx'),
'username' => env('DB_USERNAME', 'xxxx'),
'password' => env('DB_PASSWORD', 'xxxxx'),
......
],
'tenant' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', '7239b4a43a'),
'username' => env('DB_USERNAME', 'xxxx'),
'password' => env('DB_PASSWORD', 'xxxx'),
......
],
我有设置会话(config / sessions.php)
/*
|----------------------------------------
| Session Cookie Domain
|----------------------------------------
|
*/
'domain' => env('SESSION_DOMAIN', '.abcd.in'),
现在,我可以使用相同的域用户表完全登录。如果我在一个租户连接中登录,则无需登录即可转到具有相同角色的第二个域租户连接,反之亦然,即,如果我从一个域注销,则退出第二个域。我也在使用Spatie / roles-permissions软件包。我认为租户连接设置和/或会话处理中的某处是错误的。我的代码执行得很好。
我对这个问题的第一个怀疑是上面显示的租户连接。在所有租户中,我都将连接名称用作“租户”。在hyn / multi-tenant中,“ tenant”连接是数组吗?我的意思是它在租户连接数组中搜索正确的域名数据库名称?我不清楚这方面。如果我将所有连接都命名为租户是错误的,那么我尝试将租户命名为'tenant1','tenant2',...(此设置无效)。如何在此Hyn /多租户中设置一个会话。我正在尝试使用Redis,但是我不知道如何在localhost中设置Redis。
答案 0 :(得分:0)
我本人将hyn包用于多租户应用程序,您只需要定义一次租户DB连接,而将db,user和pass留空,因为hyn包将在运行时设置正确的详细信息。在您的示例中,您有两个具有相同名称的租户数据库设置,这将无法很好地工作。