最近遇到一個棘手的問題,微信公眾平臺的前端站點session老是丟失,我們是走的微信網(wǎng)頁授權,授權后獲取用戶openid,丟失后沒有openid后續(xù)的操作全白搭了,因為沒了openid只能判斷為客戶不是在微信端訪問進行提示,
然后接連收到客服中心回饋問題,不過全是安卓客戶端的ios的完全沒有(真邪門了),哎,秉著有問題就要解決的態(tài)度,開搞吧!
我們前端有六臺Windows server 2012,部署的IIS站點,用A10做的硬負載,之前openid都是作為url參數(shù)各個page進行傳遞的,領導有意見,因為作為url參數(shù)的話微信的分享功能可以把整段鏈接分享出去,后來我們把分享按鈕屏蔽掉了,不過效果還是不太好,手微信頁面加載慢的時候屏蔽的js還沒生效還是能復制到鏈接什么的,后來改成了session,所以考慮到應該在請求分發(fā)下六臺服務器session沒同步導致的!
之前也看過寫關于分布式下session的問題,然后自己也想了想,試著用redis+Cookie的方案來試下,這個方案也有兩種用法,目前只使用了第一種,第二種是為了防止第一種失敗考慮的,下面大概先說下方案。
用戶授權后,任意站點拿到openid后生成guid作為sessionId 寫到cookie, 然后將sessionId+自定義key作為rediskey,然后將openid作為redisvalue寫入redis,redis跟cookie的寫入都是有時效性的,如果中途請求分發(fā)到別的服務器就直接拿cookie然后組裝rediskey去查詢,如果沒有那就認為客戶不是正常手段進入頁面的,如果有就拿openid進行下面業(yè)務操作,見圖:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數(shù)據(jù)結構來看看(二) 2017-07-26