更新時間:2020-11-16 15:52:06 來源:動力節(jié)點(diǎn) 瀏覽2344次
Spring Session是Spring的項目之一,Spring Session把servlet容器實現(xiàn)的httpSession替換為spring-session,專注于解決session管理問題。Spring Session提供了集群Session(Clustered Sessions)功能,默認(rèn)采用外置的Redis來存儲Session數(shù)據(jù),以此來解決Session共享的問題。

spring-session提供對用戶session管理的一系列api和實現(xiàn)。提供了很多可擴(kuò)展、透明的封裝方式用于管理httpSession/WebSocket的處理。
支持功能
1)輕易把session存儲到第三方存儲容器,框架提供了redis、jvm的map、mongo、gemfire、hazelcast、jdbc等多種存儲session的容器的方式。這樣可以獨(dú)立于應(yīng)用服務(wù)器的方式提供高質(zhì)量的集群。
2)同一個瀏覽器同一個網(wǎng)站,支持多個session問題。從而能夠很容易地構(gòu)建更加豐富的終端用戶體驗。
3)Restful API,不依賴于cookie??赏ㄟ^header來傳遞jessionID??刂苨ession id如何在客戶端和服務(wù)器之間進(jìn)行交換,這樣的話就能很容易地編寫Restful API,因為它可以從HTTP頭信息中獲取session id,而不必再依賴于cookie。
4)WebSocket和spring-session結(jié)合,同步生命周期管理。當(dāng)用戶使用WebSocket發(fā)送請求的時候,能夠保持HttpSession處于活躍狀態(tài)。
5)在非Web請求的處理代碼中,能夠訪問session數(shù)據(jù),比如在JMS消息的處理代碼中。
需要說明的很重要的一點(diǎn)就是,Spring Session的核心項目并不依賴于Spring框架,所以,我們甚至能夠?qū)⑵鋺?yīng)用于不使用Spring框架的項目中。Spring Session提供了一種獨(dú)立于應(yīng)用服務(wù)器的方案,這種方案能夠在Servlet規(guī)范之內(nèi)配置可插拔的session數(shù)據(jù)存儲,不依賴于任何應(yīng)用服務(wù)器的特定API。這就意味著Spring Session能夠用于實現(xiàn)了servlet規(guī)范的所有應(yīng)用服務(wù)器之中(Tomcat、Jetty、WebSphere、WebLogic、JBoss等),它能夠非常便利地在所有應(yīng)用服務(wù)器中以完全相同的方式進(jìn)行配置。我們還可以選擇任意最適應(yīng)需求的外部session數(shù)據(jù)存儲。這使得Spring Session成為一個很理想的遷移工具,幫助我們將傳統(tǒng)的JavaEE應(yīng)用轉(zhuǎn)移到云中,使其成為滿足如下:
每個用戶有多個賬號
假設(shè)我們在example.com上運(yùn)行面向公眾的Web應(yīng)用,在這個應(yīng)用中有些用戶會創(chuàng)建多個賬號。例如,用戶Jeff Lebowski可能會有兩個賬戶thedude example.com和lebowski example.com。和其他Java Web應(yīng)用一樣,我們會使用HttpSession來跟蹤應(yīng)用的狀態(tài),如當(dāng)前登錄的用戶。所以,當(dāng)用戶希望從thedude example.com切換到lebowski example.com時,他必須要首先退出,然后再重新登錄回來。
借助Spring Session,為每個用戶配置多個HTTP session會非常容易,這樣用戶在thedude example.com和lebowski example.com之間切換的時候,就不需要退出和重新登錄了。
多級別的安全預(yù)覽
假設(shè)我們正在構(gòu)建的Web應(yīng)用有一個復(fù)雜、自定義的權(quán)限功能,其中應(yīng)用的UI會基于用戶所授予的角色和權(quán)限實現(xiàn)自適應(yīng)。
例如,假設(shè)應(yīng)用有四個安全級別:public、confidential、secret和top secret。當(dāng)用戶登錄應(yīng)用之后,系統(tǒng)會判斷用戶所具有的最高安全級別并且只會顯示該級別和該級別之下的數(shù)據(jù)。所以,具有public權(quán)限的用戶只能看到public級別的文檔,具有secret權(quán)限的用戶能夠看到public、confidential和secret級別的文檔,諸如此類。為了保證用戶界面更加友好,應(yīng)用程序應(yīng)該允許用戶預(yù)覽在較低的安全級別條件下頁面是什么樣子的。例如,top secret權(quán)限的用戶能夠?qū)?yīng)用從top secret模式切換到secret模式,這樣就能站在具有secret權(quán)限用戶的視角上,查看應(yīng)用是什么樣子的。
典型的Web應(yīng)用會將當(dāng)前用戶的標(biāo)識及其角色保存在HTTP session中,但因為在Web應(yīng)用中,每個登錄的用戶只能有一個session,因此除了用戶退出并重新登錄進(jìn)來,我們并沒有辦法在角色之間進(jìn)行切換,除非我們?yōu)槊總€用戶自行實現(xiàn)多個session的功能。
借助Spring Session,可以很容易地為每個登錄用戶創(chuàng)建多個session,這些session之間是完全獨(dú)立的,因此實現(xiàn)上述的預(yù)覽功能是非常容易的。例如,當(dāng)前用戶以top secret角色進(jìn)行了登錄,那么應(yīng)用可以創(chuàng)建一個新的session,這個session的最高安全角色是secret而不是top secret,這樣的話,用戶就可以在secret模式預(yù)覽應(yīng)用了。
動力節(jié)點(diǎn)springsession教程視頻,本課程詳細(xì)講解Spring session如何解決集群模式/分布式/跨域環(huán)境下,實現(xiàn)session的同步共享問題,是構(gòu)建大規(guī)模應(yīng)用必須要考慮的一個問題。
課程學(xué)習(xí)目錄
1.SpringSession:Session機(jī)制
2.SpringSession:Session機(jī)制存放過程
3.SpringSession:集群后丟失Session原因
4.SpringSession:Session共享方案介紹
5.SpringSession:SpringSession介紹
6.SpringSession:Session丟失演示
7.SpringSession:集成SpringSession實現(xiàn)Session共享
8.SpringSession:Redis中的Session數(shù)據(jù)存放結(jié)構(gòu)
9.SpringSession:SpringSession使用場景
10.SpringSession:同域名下不同項目的Session共享
11.SpringSession:同根據(jù)域名不同二級子域名的Session共享
12.SpringSession:單點(diǎn)登錄
13.SpringSession:P2P項目Session共享
14.SpringSession:SpringBoot集成SpringSession

以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java分布式開發(fā)視頻,springsession實戰(zhàn)學(xué)習(xí)”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743