基于session认证
目前大多數web應用的用戶認證機制都是基于session的。用戶認證成功后,在服務端生成用戶相關的數據保存在session中(當前會話),而發給客戶端的sesssion_id 存放到 cookie 中,這樣用客戶端請求時帶上 session_id 就可以驗證服務器端是否存在 session 數據,以此完成用戶的合法校驗。當用戶登出或過期時把服務端session銷毀,客戶端的session_id也就無效了。
?
而在分布式的環境下,基于session的認證會出現一個問題。當我們第一次訪問網站的時候,負載均衡將本地的請求分配到Web服務器A,那么session創建在Web服務器A,第二次訪問的時候如果我們不做處理就不能保證還是會落到Web服務器A了。
? 這個時候,通常的做法有下面幾種:
Session復制:多臺應用服務器之間同步session,使session保持一致,對外透明。
Session粘滯:當用戶訪問集群中某臺服務器后,強制指定后續所有請求均落到此機器上。
Session數據集中存儲:將Session存入分布式緩存集群中,所有服務器應用實例統一從分布式緩存集群中存取Session。
? 總體來講,基于session認證的認證方式,可以更好的在服務端對會話進行控制,且安全性較高。但是,session機制方式基于cookie,在移動應用上無法有效使用,并且無法跨域,保持住會話的做法非常麻煩。
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的基于session认证的全部內容,希望文章能夠幫你解決所遇到的問題。