一、個人理解的web應用登入流程大概是以下幾個步驟(省略了很多細節。。:
使用者瀏覽器中傳送登入請求 ->
若認證通過,後端響應中帶上set-cookie給瀏覽器。其中cookie中有專屬該使用者的jsessionid ->
瀏覽器儲存cookie,並且在後續請求中帶上cookie ->
伺服器收到後續請求,首先判斷cookie中的jsessionid是否有效。若無效,返回403;若有效,處理該請求 ->
繼續處理,直到session失效
二、spring session
由於專案部署的機器不止一台,並且每台機器上可能有多個po,同乙個使用者的請求可能會分配在不同的機器或者po上。
為保證同乙個使用者訪問系統能正常進行,使用了spring session實現session共享。
spring session原理大致是,把原來儲存在具體某個web伺服器中的session,經過過濾器,儲存在redis中。後續請求的session讀取都從redis中拿
1、使用方法:
org.springframework.session
spring-session
org.springframework.boot
spring-boot-starter-redis
spring:
redis:
host: localhost
port: 6379
password: pwd123
以上就好了。。
2、因為session儲存在redis中,所以即使伺服器重啟了,使用者不重新登入,等伺服器起好後,只要不清瀏覽器的cookie,也是可以正常登入的。
如果不設定過期時間,redis中的session可能會越來越多,可以考慮使用定時任務定期刪除。
三、相關問題
1、最近出現的乙個問題是,測試環境登入,除了登入的介面,後續介面立馬出現403 認證失敗異常。
同乙個瀏覽器中,首先登入測試環境,然後再登入生產環境,再回到測試環境的頁面操作,介面就會出現403異常。
測試環境和生產環境的cookie中,jsessionid的name和domain都是相同的。若在同乙個瀏覽器中同時開啟兩個環境,會發生cookie串用的情況。
上面的場景,回到測試環境處理請求時,後端接受到的jsessionid其實是生產環境的,測試環境的伺服器不認識,就認為是非法使用者了。
想到的一種辦法是,不同環境設定不同的cookie name
UML雜七雜八
各種分析的角度 目的。1 用例分析,是整個系統層次的功能 使用者的分析 2 靜態分析是對系統實現過程中對類層次的分析,它關注各個實現類的基本性情及各個類之前的關係 關聯 組合 聚合 泛化。3 活動分析是對系統功能業務及業務流和的分析,它是對物件層次的分析。這裡面引入了事件 時候的因素了 4 元件分析...
RTSP雜七雜八
1755埠 1755埠預設情況下用於 microsoft media server 微軟 伺服器,簡稱mms 554埠預設情況下用於 real time streaming protocol 實時流協議,簡稱rtsp 試試下面的方法 開始 控制面板 網路和撥號鏈結 右鍵點選你當前用的網路,點屬性 選...
雜七雜八 新年
新年快到了,從2014 到 2015 大學只有一半的時間了!我想分享這麼一首歌 那年的願望 口琴真的很讚,讓人憂傷的一首歌 那年的願望 歌手 好妹妹樂隊 詞曲 王小洋 編曲 黃立煒 如今的我總是感到迷惑 像陣風 不知明天的方向 有時失落 偶爾沉默 孤單 現實的重量 踏在微弱的肩上 誰在追趕 誰在旁觀...