javascript - 用redis實現單點登陸
我想大声告诉你
我想大声告诉你 2017-05-24 11:30:41
0
5
799

使用者登陸後把使用者資訊存到redis中,同時產生一個token值,當使用者點擊其他介面時攜帶token值,顯示登陸狀態,程式碼怎麼實現,我寫的程式碼總是實作不了?

我想大声告诉你
我想大声告诉你

全部回覆(5)
淡淡烟草味

PC 端相同一級網域下的單點登錄,只需要操作cookie 就行了
當然,使用上token 跟cookie 是一樣的,
原理都差不多吧,不知道你實現不了是哪裡出問題了,乾脆看看,

1、在新頁面能不能取得 token
2、根據 token 能不能在 redis 查到用戶資料
3、能查到用戶資料的話,還有啥其他問題 ?

阿神

主要的問題是,你怎麼讓使用者造訪的時候帶上token資訊。
使用Redis存儲,然後和cookie的值進行驗證就可以了。

我想大声告诉你

用戶點擊其他頁面的時候帶上用戶的id,你生成token的時候用uid加鹽或更複雜的加密演算法加密生成。接受到用戶的id,用id去加密與token比較。一致就是登陸了。 (這大概就是你想要實現的效果?)

Ty80

等等,單點登入除了考慮token的問題,你要考慮A站登入了,產生的信息,怎麼在打開B站的時候直接獲取到。事實上,不同網站的cookies、session不一樣,沒辦法取得。我看過ucenter的做法,A登入之後,會給所有他的兄弟站點,透過js發起http請求,也就相當於將token傳給所有的站點,進行登入操作,每個站點都產生session跟cookies。

Ty80

token的作用其實代替密碼 user_id=xxx&token=xxxx 透過使用者id查詢登陸資訊 比對查詢到的token是否與參數的token一致

單點登陸的我想到的方案
例如
用戶中心passport.test.com
支付中心pay.test.com
在passport.test.com
設定p3p header("P3P: CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");
將使用者的登陸資訊加密寫入cookie

在 pay.test.com 取得cookie資訊傳到passport.test.com 介面驗證登陸資訊

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!