2016-09-25 92 views
0

我在Laravel 5中構建一個站點,我需要像這樣管理會話: 例如。我有一個站點[email protected]託管在服務器X上,另一個託管在服務器Y上的[email protected]和數據庫(兩個服務器都是不同的國家),我需要爲這兩個站點使用相同的數據庫,但會話管理是我在[email protected]的典型任務是將數據庫託管在[email protected]上。我正在使用身份驗證laravel進行身份驗證如何可能請幫助 - 。不同服務器上的會話管理以及具有相同數據庫的不同域

回答

0

您應該在兩臺服務器上使用相同的數據庫連接。您可以爲會話管理創建一個小型的第三臺服務器,也可以簡單地告訴X服務器連接到Y服務器數據庫。您將首先將環境變量SESSION_DRIVER或配置屬性session.driver設置爲:databaseredis,具體取決於您使用的是什麼。然後創建一個連接配置文件database.phpconnections屬性如果它是一個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

感謝您寶貴的建議,我的理念現在已經被清除。但是我仍然堅持提到小型第三服務器的要求,請詳細解釋它對我的基本需求,以及需要維護會話配置的地方。因爲我還沒有以這種方式使用會話驅動程序。我只在配置中完成了數據庫連接。基本會話驅動程序會做什麼,以及它如何與會話/ cookie服務器相關 – ak001

+0

對答案添加了解釋 –

相關問題