黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Spring Session教程
Spring Session常見的應(yīng)用場(chǎng)景
Spring Session的執(zhí)行流程
Session會(huì)話管理

Spring Session單點(diǎn)登錄

不同根域名下的項(xiàng)目實(shí)現(xiàn)Session共享,

比如阿里巴巴這樣的公司,有多個(gè)業(yè)務(wù)線,多個(gè)網(wǎng)站,用戶在一個(gè)網(wǎng)站登錄,那么其他網(wǎng)站也會(huì)是登錄了的狀態(tài),比如:登錄了淘寶網(wǎng),則天貓網(wǎng)也是登錄的;

www.taobao.com

www.tmall.com

比如:www.web.com www.p2p.com www.dai.com

對(duì)于不同根域名的場(chǎng)景,要實(shí)現(xiàn)一處登錄,處處登錄,Spring Session不支持;

單點(diǎn)登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。目前市面上有很多實(shí)現(xiàn)單點(diǎn)登錄的方案,例如CAS,Token頒發(fā)校驗(yàn),Cookie+域名+路徑配置,在這里主要是想介紹一下第三種方案的實(shí)現(xiàn)方式。

概述
1. SpringSession提供了
• 一套管理ServletHttpSession的解決方案;
• 一臺(tái)Cluster Session的解決方案,默認(rèn)使用外置的Redis存儲(chǔ)Session的方式解決Session共享的問題;

2. 相關(guān)網(wǎng)站:
• 官方網(wǎng)站:https://projects.spring.io/spring-session
• 文檔地址:https://docs.spring.io/spring-session/docs/current/reference/html5
• 源碼地址:https://github.com/spring-projects/spring-session

集成步驟

1. 導(dǎo)入maven(注意Spring的版本需要大于等于4.0.3,否在后面的過濾器會(huì)報(bào)異常):

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>1.2.0.RELEASE</version>
</dependency>

2. 添加過濾器SessionExpireFilter

<filter>
    <filter-name>sessionExpireFilter</filter-name>
    <filter-class>com.mmall.controller.common.SessionExpireFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>sessionExpireFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>

3. 在Spring的配置文件中添加配置:

<bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
    <property name="maxInactiveIntervalInSeconds" value="1800" />
</bean>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxTotal" value="20"/>
    <property name="maxIdle" value="10"/>
    <property name="minIdle" value="2"/>
    <property name="testOnBorrow" value="true"/>
    <property name="testOnReturn" value="false"/>
</bean>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <property name="hostName" value="127.0.0.1" />
    <property name="port" value="6379" />
    <property name="database" value="0"/>
    <property name="poolConfig" ref="jedisPoolConfig" />
</bean>

4. 添加單點(diǎn)登錄Session的各種配置:

<bean id="defaultCookieSerializer" class="org.springframework.session.web.http.DefaultCookieSerializer">
    <property name="cookieName" value="USER_KEY"/>
    <property name="domainName" value=".shreker.org"/>
    <property name="useHttpOnlyCookie" value="true"/> <!-- Only In Servlet3 -->
    <property name="cookiePath" value="/"/>
    <property name="cookieMaxAge" value="1800"/>
</bean>

5. 正常編寫session代碼(注意:這里的response.getData()返回的對(duì)象必須實(shí)現(xiàn)接口java.io.Serializable),如:

session.setAttribute(Consts.USER_IN_SESSION,response.getData());
session.getAttribute(Const.USER_IN_SESSION);
session.removeAttribute(Const.USER_IN_SESSION);

6. 完成配置,需要注意:

• Spring-Session通過代理攔截我們?cè)O(shè)置的session信息,并使用Jedis存儲(chǔ)到Redis上;

• Spring-Session在Redis上存儲(chǔ)的不止用戶的信息,還有兩個(gè)關(guān)聯(lián)的key;

• 當(dāng)過期時(shí)間到時(shí),Spring-Session會(huì)先去刪除關(guān)聯(lián)的key信息,最后過一段時(shí)間刪除真正存儲(chǔ)的用戶信息;

• Redis中,當(dāng)關(guān)聯(lián)的key被刪除之后,真正的信息刪除之前的這一段時(shí)間里,我們也是無法獲取真正存儲(chǔ)在Redis中的信息的;

7. 使用到的相關(guān)的類:

• org.springframework.data.redis.connection.jedis.JedisConnectionFactory

• org.springframework.web.filter.DelegatingFilterProxy

•org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration

• org.springframework.session.web.http.DefaultCookieSerializer

• redis.clients.jedis.JedisPoolConfig

• org.springframework.session.web.http.SessionRepositoryFilter

• org.springframework.session.data.redis.RedisOperationsSessionRepository

• org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer

• org.springframework.session.web.http.SessionRepositoryFilter.SessionRepositoryRequestWrapper

• org.springframework.session.web.http.SessionRepositoryFilter.SessionRepositoryResponseWrapper

• org.springframework.session.web.http.CookieHttpSessionStrategy

全部教程
主站蜘蛛池模板: 日韩欧美卡一卡二卡新区 | 日本一区二区免费看 | 九九精品视频免费 | 97理论三级九七午夜在线观看 | 欧美黄色一级 | 国产高清视频在线播放 | 美国一级大黄一片免费的网站 | 国产高清在线精品一区a | 韩国久播影院理论片不卡影院 | 天天干天天爽天天操 | 亚洲男女视频 | 色香蕉在线视频 | 欧美高清一区二区三 | 色综合天天综合网国产成人网 | 天堂中文资源网 | 亚洲欧美天堂 | 99在线精品视频免费观里 | 久久综合色婷婷 | 日韩第一页在线观看 | 国产一区精品在线 | 小明明看看视频永久免费网 | 又黄又变态又免费的视频 | 欧美高清在线视频在线99精品 | 大片毛片女女女女女女女 | 国产黑色丝袜小视频在线 | 久久91久久91精品免费观看 | 欧美丝袜老师 | 成人免费观看男女羞羞视频 | 天天看毛片 | 国产一级片免费视频 | 欧洲精品视频在线观看 | 精品伊人网 | 国产无遮挡裸体免费视频在线观看 | 天天操天天爽天天射 | 亚洲欧美日韩精品一区 | 日韩插插| 亚洲一级香蕉视频 | 国产在线视频网 | 好色站 | 一区小说二区另类小说三区图 | 国产在线a不卡免费视频 |