我在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
對答案添加了解釋 –