簡體   English   中英

兩個CodeIgniter應用程序之間的會話共享

[英]Session sharing between two CodeIgniter Applications

我有2個codeigniter安裝程序在同一服務器上運行。

第一個應用程序是:localhost / aa / index.php

第二個應用程序是:localhost / aa / invoice / index.php

第二個應用程序位於第一個應用程序文件夾中。 在實際環境中,它們將位於同一域中。 我正在嘗試使單一登錄正常工作-因此,如果我在aa應用程序中設置了userdata,我也應該能夠在invoice文件夾中進行驗證。

有沒有一種分享會議的方法。

由於這些文件夾將始終位於同一域中,因此我也願意使用ci庫(僅限php)之外的會話進行工作。

編輯:當他們沒有任何數據時,它們顯示相同的會話ID。 當我在一個應用程序上添加一些變量時,另一個就不同步了。

我也有會話存儲在數據庫中(兩個應用程序共享同一個數據庫。)

請建議。

謝謝! :)

由於某種原因,Codeigniter會滾動其自己的會話實現,而不是本機PHP會話。

http://codeigniter.com/user_guide/libraries/sessions.html

您可以選擇使用:

  1. cookie存儲(不理想,存儲空間小,cookie中的敏感數據?)。
  2. 數據庫會話(使用會話ID cookie持久化)。
  3. 覆蓋並滾動自己的(使用本機php會話!)

顯然,您需要確保正確配置了會話標識符,以便兩個應用程序都可以從相同的會話數據中讀取數據。 如果使用數據庫實現,則需要確保兩個應用程序都可以訪問同一數據庫。

更復雜的是,如果您選擇加密會話,則加密類使用的鹽在兩個應用程序中也必須相同,因此任何一個都能夠解密共享的會話數據。

$config['encryption_key'] = 'epitome';

兩個應用程序文件夾的encryption_key配置名稱將相同。

更改codeigniter中的encryption_key路徑是application/config/config.php行號228。

$config['sess_cookie_name'] = 'myvalue';

在config.php文件中,您可以在兩個CI Apps中使用“文件”會話驅動程序設置相同的值。

CI_Session Object

([userdata] =>數組([__ci_last_regenerate] => 1490351129 [Level] => 1 [User] => 103 [Fullname] => Ruben Caldera)

[_driver:protected] => files
[_config:protected] => Array
    (
        [cookie_lifetime] => 600
        [cookie_name] => MyHiddenValue
        [cookie_path] => /
        [cookie_domain] => 
        [cookie_secure] => 
        [expiration] => 600
        [match_ip] => 
        [save_path] => /tmp
    )

如果我可以....我已經注意到,那些不切實際且違反常規的設計問題應為長期存在且根深蒂固的問題提供基礎。...您應該問自己,這確實是必要/可取的。當我們知道框架是2個不同的版本時,它們在2個不同的版本之間共享會話數據,因為它們做事的方式是不同的……我只能說,無論您做什么。遲早您將不得不將其丟棄。

請讓我知道是否以后再發現。

如果您使用相同的加密密鑰在同一服務器上安裝代碼,則默認情況下,兩個安裝都將共享會話。 實際上,當我在同一台服務器上為另一個客戶端復制codeigniter安裝時,我發現了這一點。 我擔心這是一個錯誤。

如果將代碼移到同一服務器上,則默認情況下,兩個會話都將開始共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM