2016-09-25 90 views
0

我在Laravel 5中构建一个站点,我需要像这样管理会话: 例如。我有一个站点[email protected]托管在服务器X上,另一个托管在服务器Y上的[email protected]和数据库(两个服务器都是不同的国家),我需要为这两个站点使用相同的数据库,但会话管理是我在[email protected]的典型任务是将数据库托管在[email protected]上。我正在使用身份验证laravel进行身份验证如何可能请帮助 - 。不同服务器上的会话管理以及具有相同数据库的不同域

回答

0

您应该在两台服务器上使用相同的数据库连接。您可以为会话管理创建一个小型的第三台服务器,也可以简单地告诉X服务器连接到Y服务器数据库。您将首先将环境变量SESSION_DRIVER或配置属性session.driver设置为:databaseredis,具体取决于您使用的是什么。然后创建一个连接配置文件database.phpconnections属性如果它是一个RDBMS或redis如果它是一个redis数据库。

'connections' => [ 
    // ... 
    'session' => [ 
     'driver' => 'mysql', 
     'host'  => env('SESSION_DB_HOST'), 
     'database' => env('SESSION_DB_NAME'), 
     'username' => env('SESSION_DB_USERNAME'), 
     'password' => env('SESSION_DB_PASSWORD'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
     'strict' => false, 
    ] 
] 
// Or 
'redis' => [ 

    // ... 

    'session' => [ 
     'host'  => env('SESSION_REDIS_HOST'), 
     'port'  => env('SESSION_REDIS_PORT', 6379), 
     'database' => 0, 
    ], 

] 

然后将文件session.php中的connection的值更改为在这种情况下你想要的连接,session的名称。

请注意您需要打开所需的端口并执行一些授权过程并在主机服务器(Y服务器,因为它有数据库)上采取安全措施。

----回答评论

会话驱动程序是laravel使用管理会话机制。它可以在文件,数据库,redis上......所以,当你在它的配置文件中选择会话驱动程序并且驱动程序是一个数据库时,你可以为它指定一个数据库连接,否则它将使用默认的数据库连接。因此,如果您创建了第三台服务器并且希望将Redis用作数据库,那么您将打开端口6379(以防您使用默认的redis配置),然后在您的Laravel安装中创建一个连接。在database.php连接会像这样:

'redis' => [ 

    // ... 

    'my_session' => [ 
     'host'  => env('SESSION_REDIS_HOST'), 
     'port'  => env('SESSION_REDIS_PORT', 6379), 
     'database' => 0, 
    ], 
] 

然后在您的环境中或在.env你地址:

SESSION_REDIS_HOST=xx.xx.xx.xx // the ip address or domain of the third server 
SESSION_REDIS_PORT= 6379 
SESSION_DRIVER=redis 

最后,在你session.php配置,你会设置这些值:

//... 
'connection' => 'my_session', 

您会在所有希望连接到相同会话数据库的Laravel安装上执行此操作。

+0

感谢您宝贵的建议,我的理念现在已经被清除。但是我仍然坚持提到小型第三服务器的要求,请详细解释它对我的基本需求,以及需要维护会话配置的地方。因为我还没有以这种方式使用会话驱动程序。我只在配置中完成了数据库连接。基本会话驱动程序会做什么,以及它如何与会话/ cookie服务器相关 – ak001

+0

对答案添加了解释 –

相关问题