我在Laravel 5中构建一个站点,我需要像这样管理会话: 例如。我有一个站点[email protected]托管在服务器X上,另一个托管在服务器Y上的[email protected]和数据库(两个服务器都是不同的国家),我需要为这两个站点使用相同的数据库,但会话管理是我在[email protected]的典型任务是将数据库托管在[email protected]上。我正在使用身份验证laravel进行身份验证如何可能请帮助 - 。不同服务器上的会话管理以及具有相同数据库的不同域
0
A
回答
0
您应该在两台服务器上使用相同的数据库连接。您可以为会话管理创建一个小型的第三台服务器,也可以简单地告诉X服务器连接到Y服务器数据库。您将首先将环境变量SESSION_DRIVER
或配置属性session.driver
设置为:database
或redis
,具体取决于您使用的是什么。然后创建一个连接配置文件database.php
connections
属性如果它是一个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
Laravel提供了将会话存储在数据库中的数据库会话,以便您可以为应用程序使用多个服务器。看看https://laravel.com/docs/5.3/session#database-sessions
相关问题
- 1. 具有相同实体的不同数据库服务器的nhibernate会话
- 2. 相同的服务器,不同的域需要不同的会话
- 3. 在不同的服务器上创建相同的会话
- 4. 不同服务器上的相同数据库
- 5. LINQ。不同服务器上的相同数据库
- 6. 为来自同一服务器的不同域设置会话?
- 7. SimpleXML与不同服务器上的相同数据的差异
- 8. 发现在不同的2 MySQL数据库从相同的服务器具有相同的表使用php
- 9. 在不同postgres数据库(具有相同数据)上的相同查询需要700倍以上的时间
- 10. 在不同的服务器上同步不同的数据库类型
- 11. 在不同服务器上托管的多语言网站的跨域会话
- 12. 迁移Azure数据库服务器/数据库不同区域
- 13. 登录到具有相同ASPNETDB成员数据库的同一IIS服务器上的多个域?
- 14. Laravel保持在不同的服务器的子域会话
- 15. 不同Web服务之间的会话管理
- 16. 具有相同XPath的不同元素?如何以及为什么会发生?
- 17. 在不同的服务器(同一ISP)上同步两个mysql数据库
- 18. 在Doctrine和PostgreSQL的不同服务器上加入不同的数据库
- 19. PHP会话不能在不同的服务器上工作
- 20. 会话在同一服务器上的多个域上共享
- 21. 两个EAR文件,相同的JPA实体管理器,相同的事务=>相同的会话?
- 22. 调试SQL Server缓慢:相同的数据库,不同的服务器
- 23. 使用来自同一服务器内不同域的两个数据库
- 24. 会话在单个域的不同页面上具有不同的会话ID,非安全页面!
- 25. 2个具有相同基础对象的不同服务
- 26. 不使用mysqldump复制MYSQL数据库相同的服务器
- 27. 具有2个不同域的相同子域
- 28. number_format不会在不同服务器上返回相同的结果
- 29. 特定站点不是所有的域相同的服务器
- 30. SessionID相同,但会话数据不相同
感谢您宝贵的建议,我的理念现在已经被清除。但是我仍然坚持提到小型第三服务器的要求,请详细解释它对我的基本需求,以及需要维护会话配置的地方。因为我还没有以这种方式使用会话驱动程序。我只在配置中完成了数据库连接。基本会话驱动程序会做什么,以及它如何与会话/ cookie服务器相关 – ak001
对答案添加了解释 –