大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

Spring Session單點(diǎn)登錄

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

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

www.taobao.com

www.tmall.com

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

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

單點(diǎn)登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個應(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的解決方案;
• 一臺Cluster Session的解決方案,默認(rèn)使用外置的Redis存儲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,否在后面的過濾器會報異常):

<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()返回的對象必須實(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通過代理攔截我們設(shè)置的session信息,并使用Jedis存儲到Redis上;

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

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

• Redis中,當(dāng)關(guān)聯(lián)的key被刪除之后,真正的信息刪除之前的這一段時間里,我們也是無法獲取真正存儲在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

全部教程
主站蜘蛛池模板: 老子影院伦不卡欧美 | 中国女人内谢25xxxxx | 日本在线一区二区 | 欧美日韩国产高清一区二区三区 | 国产成人a∨麻豆精品 | 色悠综合 | 久久九九热 | 激情开心婷婷 | 久久综合综合久久 | 色屁屁影视大全 | 人人干人人舔 | 欧美日韩免费在线 | 站长推荐国产精品视频 | 国产精品一区二区久久精品涩爱 | 亚洲精品欧洲久久婷婷99 | 久久久久综合精品福利啪啪 | 亚洲精品视频在线播放 | 国产不卡视频在线观看 | 日韩欧美综合 | 亚洲欧洲毛片 | 欧美一级第一免费高清 | 久久99国产亚洲高清观看韩国 | 国产国产精品人在线观看 | 色婷婷狠狠五月综合天色拍 | 日韩在线a视频免费播放 | 香蕉成人啪国产精品视频综合网 | 成人黄18免费视频 | 欧美九九| 在线性爱视频 | 黄片一级毛片 | 久久这里只有精品免费的 | 亚洲精品一区二区三区五区 | 亚洲久草 | 色偷偷7777www | 欧美性猛交xxxxx按摩欧美 | 亚洲综合首页 | 香蕉一级视频 | 最新黄色免费网站 | 成人在线亚洲 | 999在线播放 | 久久综合日韩亚洲精品色 |