我在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. 不同服務器上的相同數據庫
- 6. LINQ。不同服務器上的相同數據庫
- 7. 爲來自同一服務器的不同域設置會話?
- 8. SimpleXML與不同服務器上的相同數據的差異
- 9. 發現在不同的2 MySQL數據庫從相同的服務器具有相同的表使用php
- 10. 在不同postgres數據庫(具有相同數據)上的相同查詢需要700倍以上的時間
- 11. 相同的查詢,不同的數據庫,相同的數據庫結構,相同的數據庫服務器,不同的執行計劃
- 12. 在不同的服務器上同步不同的數據庫類型
- 13. 在不同服務器上託管的多語言網站的跨域會話
- 14. 如何讓不同的/服務器具有相同的域? [已解決]
- 15. Codeigniter - 將mysql表同步到不同服務器上的不同數據庫
- 16. 遷移Azure數據庫服務器/數據庫不同區域
- 17. SQL服務器具有相同模式的多個數據庫
- 18. 會話管理不同的域在Windows Azure上
- 19. 登錄到具有相同ASPNETDB成員數據庫的同一IIS服務器上的多個域?
- 20. 從不同的數據庫同一服務器中選擇不相等的行
- 21. Laravel保持在不同的服務器的子域會話
- 22. 不同Web服務之間的會話管理
- 23. 從不同的服務器數據庫複製表數據到不同的服務器數據庫我
- 24. 相同的代碼,不同的服務器,不同的輸出
- 25. 不同的會話數據
- 26. 管理會話的不同方式
- 27. 在不同的服務器(同一ISP)上同步兩個mysql數據庫
- 28. 具有相同XPath的不同元素?如何以及爲什麼會發生?
- 29. 在Doctrine和PostgreSQL的不同服務器上加入不同的數據庫
- 30. 兩臺具有相同Time.zone,相同服務器時區的Rails服務器,但從Date.to_time獲得不同結果
感謝您寶貴的建議,我的理念現在已經被清除。但是我仍然堅持提到小型第三服務器的要求,請詳細解釋它對我的基本需求,以及需要維護會話配置的地方。因爲我還沒有以這種方式使用會話驅動程序。我只在配置中完成了數據庫連接。基本會話驅動程序會做什麼,以及它如何與會話/ cookie服務器相關 – ak001
對答案添加了解釋 –