日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

PHP单点登录

發(fā)布時間:2024/4/14 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP单点登录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

之前回答過同樣的問題,我重新拿出來再回答一遍。題主請看

首先提醒一下題主不要被新技術(shù)嚇到了,也不要去查什么SSO(Single Sign On,單點(diǎn)登錄),那樣只能增大你問題的復(fù)雜度和對這個問題的恐懼心理,其實(shí)真的沒那么難。

我來幫你拆解下問題,你說的Session多端登錄,其實(shí)可以拆解為Session共享+登錄,不是什么高級的東西,無非是需要的Session值在讓不同服務(wù)器不同域名的情況下都可以訪問,讓大家都讀取同一個Session值,重要的是同一個session_id()值。這樣的話,每臺(服務(wù)器/項(xiàng)目)讀取的都是同樣的數(shù)據(jù),既然都是讀取同樣的數(shù)據(jù)(尤其讀取同樣的session_id()值),那么我們不就可以憑借此標(biāo)識符讓不同用戶顯示不同的內(nèi)容,多點(diǎn)登陸的問題不就解決了

(把問題簡化,登錄對于用戶看來是一個特別的過程,在我們開發(fā)者看來無非就是讓不同的人讀取到不同的數(shù)據(jù)而已,而我們只需要獲取那個登陸標(biāo)識符即可)。

也就是說,session共享的關(guān)鍵技術(shù)點(diǎn)在于兩點(diǎn):

1. 讓客戶端訪問同一個sessionId,
2. 讓所有域名對應(yīng)的服務(wù)器訪問的Session的數(shù)據(jù)的位置必須一致

下面重點(diǎn)講講實(shí)現(xiàn),Session共享相對于Cookie共享來說較為復(fù)雜,因?yàn)榍闆r相對于比較多,大概有四種情況

同服務(wù)器同域名,同服務(wù)器不同域名,不同服務(wù)器同域名,不同服務(wù)器不同域名。

同服務(wù)器同域名(不同子域名)的實(shí)現(xiàn):

實(shí)現(xiàn)比較簡單,直接找一份網(wǎng)上的demo(圖侵刪),直接按照以下的代碼實(shí)現(xiàn)即可。

同服務(wù)器不同域名的實(shí)現(xiàn):

這種情況下,我們再次明確實(shí)現(xiàn)session共享的關(guān)鍵技術(shù)點(diǎn),同一個sessionId同樣的數(shù)據(jù)源
不同域名的話就要先將cookie('PHPSESSID')跨域,然后通過這個sessionid值從MySQL數(shù)據(jù)庫或者Nosql中取得對應(yīng)數(shù)據(jù),這樣就實(shí)現(xiàn)了同服務(wù)器不同域名的session共享。
首先是cookie跨域:

然后是Redis數(shù)據(jù)共享,key就是session_id,值就是需要共享的數(shù)據(jù),使用到的就是Redis的集群技術(shù),實(shí)例過于復(fù)雜,感興趣的可以直接去文章查看:redis cluster 集群 安裝 配置 詳解

不同服務(wù)器同域名的實(shí)現(xiàn):

此種情況與<同服務(wù)器不同域名的實(shí)現(xiàn)>差不多,但在此種情況下不需要考慮cookie跨域的問題了,那么著重實(shí)現(xiàn)數(shù)據(jù)共享即可,同上,key為sessio_id,值為具體的數(shù)據(jù)值,參考文章同上redis cluster 集群 安裝 配置 詳解。

不同服務(wù)器名不同域名的實(shí)現(xiàn):

此種情況和<同服務(wù)器不同域名的實(shí)現(xiàn)>圖探訪,也是要實(shí)現(xiàn)兩個目標(biāo),同一個sessionId同樣的數(shù)據(jù)源。不同域名的話就要先將cookie('PHPSESSID')跨域,然后通過這個sessionid值從MySQL數(shù)據(jù)庫或者Nosql中取得對應(yīng)數(shù)據(jù),這樣就實(shí)現(xiàn)了同服務(wù)器不同域名的session共享。
首先是cookie跨域:

然后是Redis數(shù)據(jù)共享,key就是session_id,值就是需要共享的數(shù)據(jù),使用到的就是Redis的集群技術(shù),實(shí)例過于復(fù)雜,感興趣的可以直接去文章查看:redis cluster 集群 安裝 配置 詳解。

我們發(fā)現(xiàn)四種情況下的解決方式都差不多,第2種情況<同服務(wù)器不同域名的實(shí)現(xiàn)>和第四種情況<不同域名不同服務(wù)器的實(shí)現(xiàn)>更是基本一樣,其中的核心思想無非就是解決兩個根源問題,session_id大家需要獲取同一個,有一個共享的數(shù)據(jù)源需要給大家獲取。

搞明白了這兩點(diǎn),Session共享的SSO也就水到渠成了。有疑惑可直接在評論區(qū)詢問,我會立即回答。

轉(zhuǎn)載于:https://my.oschina.net/yonghan/blog/791192

總結(jié)

以上是生活随笔為你收集整理的PHP单点登录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。