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. 由此,測試成功,

 

這樣子咱們就能夠經過同域下,不一樣的子級域名共享會話,解決了同域單點登陸的問題。

相關文章
相關標籤/搜索