简体   繁体   English

Laravel-Hyn多租户,租户连接设置似乎无法解决租户和会话

[英]Laravel-Hyn Multi-tenancy, tenant connection setup not seems to resolve tenants and sessions

I am developing a multi-tenant application in php using Laravel 5.7.28, Hyn/Multi-tenant 5.3 in a local host environment. 我正在本地主机环境中使用Laravel 5.7.28,Hyn / Multi-tenant 5.3在php中开发多租户应用程序。 The connection for tenancy is enforced using enforce.tenancy middleware as per the old tutorial. 根据旧教程,使用enforce.tenancy中间件强制实施租赁连接。 The database connections (config/database.php) is as shown below:(omitted unwanted lines) 数据库连接(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'),
        ......
    ],

I have set-up sessions (config/sessions.php) 我有设置会话(config / sessions.php)

/*
|----------------------------------------
| Session Cookie Domain
|----------------------------------------
|
*/
'domain' => env('SESSION_DOMAIN', '.abcd.in'), 

Now, I am able to login exactly using the same domains user table. 现在,我可以使用相同的域用户表完全登录。 If I login in one tenant connection, I am able to go to second domain tenant connection for the same role without login and vice-versa ie if I logout from one domain, I am logged out of the second domain. 如果我在一个租户连接中登录,则无需登录即可转到具有相同角色的第二个域租户连接,反之亦然;即,如果我从一个域中注销,则我将从第二个域中注销。 I am also using Spatie/roles-permissions package. 我也在使用Spatie / roles-permissions包。 I think I am wrong somewhere in either tenant connection set-up and/or session handling. 我认为在租户连接设置和/或会话处理方面我错了。 My code is executing well. 我的代码执行得很好。

My first doubt of the problem is the tenant connection shown above. 我对这个问题的第一个疑问是上面显示的租户连接。 In all tenants I am using the connection name as 'tenant'. 在所有租户中,我使用连接名称作为“租户”。 In hyn/multi-tenant, is the 'tenant' connections an array? 在hyn / multi-tenant中,“ tenant”连接是数组吗? I mean it searches for right domain database name in the array of tenant connection? 我的意思是它在租户连接数组中搜索正确的域名数据库名称? This aspect is not clear to me. 我不清楚这方面。 If I am wrong to name all connections as tenant then I tried to name tenants as 'tenant1', 'tenant2',...(this set-up did not work). 如果我将所有连接都命名为租户是错误的,那么我尝试将租户命名为'tenant1','tenant2',...(此设置无效)。 How do one sets-up sessions in this hyn/multi-tenancy. 如何在这个hyn /多租户中设置会话。 I am trying to use redis but I don't know how to set-up redis in localhost. 我正在尝试使用Redis,但我不知道如何在localhost中设置Redis。

I use the hyn package for a multi-tenant app myself, you only need to define the tenant DB connection once, leaving db, user, pass blank, as the hyn package will set the correct details at runtime. 我本人将hyn包用于多租户应用程序,您只需要定义一次租户DB连接,而将db,user和pass留空,因为hyn包将在运行时设置正确的详细信息。 In your example, you have 2 tenant db's setup with the same name, which isn't going to work very nicely. 在您的示例中,您有两个具有相同名称的租户数据库设置,这将无法很好地工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM