Laravel 同一数据库的不同服务器和不同域上的会话管理

Laravel 同一数据库的不同服务器和不同域上的会话管理,laravel,Laravel,我正在Laravel 5中建立一个站点,我需要像这样管理会话: 例如我有一个网站x@x.com在服务器X和其他服务器上托管y@y.com托管在服务器Y和数据库上(两台服务器来自不同的国家),我需要为这两个站点使用相同的数据库,但会话管理是我在中的典型任务x@x.com由于数据库托管在y@y.com. 我正在使用laravel中的Auth进行身份验证。这将如何实现请帮助-。laravel提供数据库会话,将会话存储在数据库中,以便您可以为应用程序使用多台服务器。请看一看Laravel提供了数据库会话

我正在Laravel 5中建立一个站点,我需要像这样管理会话:
例如我有一个网站x@x.com在服务器X和其他服务器上托管y@y.com托管在服务器Y和数据库上(两台服务器来自不同的国家),我需要为这两个站点使用相同的数据库,但会话管理是我在中的典型任务x@x.com由于数据库托管在y@y.com. 我正在使用laravel中的Auth进行身份验证。这将如何实现请帮助-。

laravel提供数据库会话,将会话存储在数据库中,以便您可以为应用程序使用多台服务器。请看一看

Laravel提供了数据库会话,它将会话存储在数据库中,以便您可以为应用程序使用多个服务器。查看一下

您应该在两台服务器上使用相同的数据库连接。您可以制作一个小型的第三台服务器用于会话管理,也可以简单地告诉X服务器连接到Y服务器数据库。首先,将环境变量
SESSION\u DRIVER
或配置属性
SESSION.DRIVER
设置为:
database
redis
,具体取决于您使用的是什么。然后,如果是RDBMS,则在配置文件
database.php
下的
connections
属性下创建连接,如果是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
config中,设置以下值:

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

您可以在所有要连接到同一会话数据库的Laravel安装上执行此操作。

您应该在两台服务器上使用相同的数据库连接。您可以制作一个小型的第三台服务器用于会话管理,也可以简单地告诉X服务器连接到Y服务器数据库。首先,将环境变量
SESSION\u DRIVER
或配置属性
SESSION.DRIVER
设置为:
database
redis
,具体取决于您使用的是什么。然后,如果是RDBMS,则在配置文件
database.php
下的
connections
属性下创建连接,如果是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
config中,设置以下值:

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

您可以在所有要连接到同一会话数据库的Laravel安装上执行此操作。

感谢您提出的宝贵建议,我的概念现在已经明确。但是我仍然停留在您提到的小型第三服务器的需求上,请详细向我解释它的基本需求,以及需要维护会话配置的地方。因为我还没有以这种方式使用会话驱动程序。我只在配置中进行了数据库连接。会话驱动程序的基本功能是什么,以及它与会话/Cookies服务器的关系在回答中添加了解释谢谢你的宝贵建议,我的概念现在已经清楚了。但是我仍然停留在您提到的小型第三服务器的需求上,请详细向我解释它的基本需求,以及需要维护会话配置的地方。因为我还没有以这种方式使用会话驱动程序。我只在配置中进行了数据库连接。会话驱动程序的基本功能是什么,以及它将如何与会话/Cookies中的服务器相关联?答案中添加了解释