首頁  >  問答  >  主體

javascript - 用redis實現單點登陸

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

我想大声告诉你我想大声告诉你2706 天前824

全部回覆(5)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-05-24 11:32:41

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

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

    回覆
    0
  • 阿神

    阿神2017-05-24 11:32:41

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

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-24 11:32:41

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-24 11:32:41

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-05-24 11:32:41

    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 介面驗證登陸資訊

    回覆
    0
  • 取消回覆