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