TP、PHP同域不同子級域名共享Session、單點登錄


TP、PHP同域不同子級域名共享Session、單點登錄 

目的:

  • 為了部署同個域名下不同子級域名共享會話,從而實現單點登錄的問題,一處登錄,同域處處子系統即可以實現自動登錄。

 

PHP支持通過設置cookie使得同域不同子域共享SESSION

1. 通過在執行PHP的入口文件中設置如下代碼:

  • ini_set('session.cookie_path', '/');
  • ini_set('session.cookie_domain', '.mydomain.com');
  • ini_set('session.cookie_lifetime', '1800');

2. 通過在php.ini里設置:

  • session.cookie_path = /
  • session.cookie_domain = .mydomain.com
  • session.cookie_lifetime = 1800
 

TP5.1同樣也支持配置設置,接下來演示TP如何設置得到共享會話:

  1. 首先拉取通過下載2個TP5.1項目,然后根據自己的Web環境配置,放到對應的根目錄,可以使用nginx、或者Apache服務。

  2. 配置2個項目的測試域名,配置hosts文件。

  3. 刷新hosts生效,然后通過域名。

  4. 然后在test1.t5.com指向的項目的Index控制器下添加如下代碼。

  5. 這時候在瀏覽器訪問http://test1.t5.com/,打開調試。

  6. 然后在修改test2.t5.com指向的目錄下的Index控制器代碼,如下。

  7. 然后通過瀏覽器訪問。

  8. 發現是NULL,且sessionID不一致,這時是因為沒有配置導致會話不能共享。

  9. TP需要配置2處地方,1處是cookie文件,1處是session文件,2處文件都在config目錄下,這里我使用了Redis來作為共同的會話存儲,也可以使用文件或者數據庫方式,自行配置。cookie.php,session.php配置分別如下,只要配置domain選項即可,兩個項目文件配置均一致。

  10. 配置完后瀏覽器分別清空之前兩個域名的cookie,可以使用editthiscookie谷歌瀏覽器擴展清除。

  11. 清除完首先訪問http://test2.t5.com/項目,發現是Null值。

  12. 接下來訪問http://test1.t5.com/。由此可以發現cookie發送的SessionID一致。

  13. 最后讓我們再來訪問第二個測試域名,http://test2.t5.com/

  14. 由此,測試成功,

 

這樣子我們就可以通過同域下,不同的子級域名共享會話,解決了同域單點登錄的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM