文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/。
1.背景
Web端的一次成功的登陸請求后,cookie中會保存此次回話的sessionID,再點擊其他頁面時,會將此sessionID傳遞給后台,后台讀取對應的session來進行相應邏輯行為;也就是說:session本質上還是要基於cookie的。但是,免費手機網關,不支持cookie傳輸,於是在手機端的權限驗證中,並不能簡單的在后台用request.getSession()就得到該手機應用統一的session。解決這個問題,可以在手機應用每一次登陸時,產生該用戶的一個token(類似於sessionID),手機應用再次發送請求時帶上該token即可。
2.具體思路
當手機端和網頁端使用同一個后台時,在filter中,可以先判斷是否有token傳入,如果有則判定為手機請求,通過該token來進行邏輯 判斷。如果沒有token傳入,則進行正常的session判斷。
3.開發步驟
針對於手機訪問來具體描述
3.1token表設計
token信息在數據庫表中單獨存儲,與humanID一一對應。
3.2token的使用。
3.2.1登陸服務器
手機端人員在登錄系統時,需要傳用戶名和密碼過來進行驗證。驗證通過之后,先刪除token表中該人員舊的token信息,同時在token表中新增一條該人員的token記錄,並返回到客戶端。
3.2.2后台訪問
手機端在向服務器發送請求的時候,每個請求后面都需要帶上token信息作為傳入參數。后台會在Filter中先對token信息進行過濾。如果傳入的token在token表中不存在,則直接返回到客戶端,提示token已過期,請重新登錄。如果token驗證通過,則正常的訪問后台接口。
3.2.3多終端訪問
手機多終端的訪問規則與微信類似,即在另一個終端登錄后,當前終端自動登出,保證每次只能有一個終端處於連接狀態,每次登錄都會刷新token。
3.2.4登出
終端人員主動登出時,從token表中移除該人員的token信息。
4.注意
為了安全,該token不能使用明文,可以使用對稱加密等方法。
——歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/