分佈式,微信小程序 服務器保持登入態解決方案,

登入解決方案有很多,

傳統:

      => 通過輸入密碼和用戶名, 經過數據庫查詢, 然後將用戶放入session, 下發sessionid 給遊覽器,  每次遊覽器攜帶cookie 裏面的sessionid, 訪問服務器, 查詢session , 判斷用戶是否登入

 

現在:

     spring boot + spring cloud ,   dubbox + zookeeper 等一系列的分佈式微服務框架興起,   各服務層分離, cookie 已經無法穿過服務器訪問, 造成查詢不到用戶 ==  未登入

 

解決方案:

    1, 加密算法解決方案, 優勢就是簡單,  用戶登入以後將用戶的標誌, 如 用戶id 時間戳 加密成密文, 返回給前端, 前端每次操作,都將密文上傳,  服務器拿到密文後解密成id與時間戳, 進行操作,  缺點就是不安全, 加密算法可能會被破解, 加密工具類

 

    2, 採用redis 存儲登入祕鑰, 這也是樓主推薦的, 當前主流的解決方案, 用戶在登入以後, 將用戶的 id + 隨機字符數(如UUID) + 時間戳 ,  組成redis 的key, 設置redis 的key 存活時間不能太長,  因爲redis的key數量有限,  將用戶加密數據存儲到redis 後, 將密文返回給用戶,  每次用戶操作都攜帶密文進行操作, 服務器設置全局過濾器, 進行全局校驗登入狀態, 從redis 查詢登入狀態, 這樣用戶的密文都是不一樣的, 也保證了數據的安全性,  而redis 是可以共享的, 分佈式服務器的服務都能看的見,   

 

   還需要使用心跳, 定時更新redis的key存活時間, 也就是說需要定時自動登入, 清理已下線用戶

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章