• springSession框架来实现sso单点登陆


    介绍一下springsession这个框架,其实springsession框架默认的是使用redis来实现单点登陆的,但是不支持redis集群,这个框架的特点是无侵入的实现单点登陆,就是说我们之前获取user的信息是从session中获取的,我们改造好之后还是从session中获取,逻辑代码不用改变,只不过这个session已经不是我们之前的httpsession了,它是框架包装的session,因为我们在配置文件中配置了相关的属性。ok,看代码吧。 

    注意:spring的版本要是4.0.3.RELEASE之上。否者会出错!!!

    pom.xml

    <!-- spring session 单点登录 -->
        <dependency>
          <groupId>org.springframework.session</groupId>
          <artifactId>spring-session-data-redis</artifactId>
          <version>1.2.0.RELEASE</version>
        </dependency>
    View Code

    web.xml配置   这个过滤器意思就是说拦截.do的请求,就是这个过滤器来包装session的。

    <!--<filter>-->
            <!--<filter-name>springSessionRepositoryFilter</filter-name>-->
            <!--<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>-->
        <!--</filter>-->
        <!--<filter-mapping>-->
            <!--<filter-name>springSessionRepositoryFilter</filter-name>-->
            <!--<url-pattern>*.do</url-pattern>-->
        <!--</filter-mapping>-->
    View Code

    applicationContext-spring-session.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <!-- 配置存在redis的session的过期时间-->
        <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
            <property name="maxInactiveIntervalInSeconds" value="1800" />
        </bean>
        <!-- 配置redis的最大数量 -->
        <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
            <property name="maxTotal" value="20"/>
        </bean>
        <!-- 配置redisFactory -->
        <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="poolConfig" ref="jedisPoolConfig" />
        </bean>
    
    
    
    
    </beans>
    View Code

    原理是登陆的时候框架会默认向redis插入三条数据:

     最后一个是存的User对象的一些数据。第二个是存的过期时间,也就是我们在xml中配置的那个时间,第一个我也不知道是啥。反正是只要时间一到,第一和第二就会删除,就得不到User的信息。尽管第三条数据没有删除(时间到了也会删除),他们三个都是有过期时间的。

    那么客户端浏览器呢?浏览器会存一个cookie,cookie的key是SESSION , value是第三条数据的最后那个UUID。

    我们也可以设置这个key的名字,他的类在DefaultCookieSerializer.class这个类。包括path和顶级域名,时长什么的都在这个类设置。

    注意:上面的applicationContext-spring-session.xml中我没有设置这个DefaultCookieSerializer的属性,在我们要实现单点登陆的情况下,必须要设置的,因为我们要设置顶级域名和,不懂的看redis原生实现单点登陆那篇博客。设置很简单,就是<bean></bean>设置几个字段就ok了。

     RedisOperationsSessionRepository 这个类也需要特别注意下,session的get,remove都在这个类里面

  • 相关阅读:
    Intent七大属性之总结 分类: H1_ANDROID 2013-11-10 09:41 1074人阅读 评论(0) 收藏
    使用SQLiteHelper创建数据库并插入数据 分类: H1_ANDROID 2013-11-05 22:44 1398人阅读 评论(0) 收藏
    SharedPreferences基础 分类: H1_ANDROID 2013-11-04 22:35 2559人阅读 评论(0) 收藏
    菜单之二:使用xml文件定义菜单 分类: H1_ANDROID 2013-11-03 09:39 1038人阅读 评论(0) 收藏
    菜单之一:Menu基础内容 分类: H1_ANDROID 2013-11-03 00:23 906人阅读 评论(0) 收藏
    创建ListView的基本步骤 分类: H1_ANDROID 2013-10-31 23:25 1276人阅读 评论(0) 收藏
    事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏
    ImageView一例 分类: H1_ANDROID 2013-10-30 23:02 1812人阅读 评论(0) 收藏
    TextView之一:子类的常用属性 分类: H1_ANDROID 2013-10-30 15:14 770人阅读 评论(0) 收藏
    TextView之二:常用属性 分类: H1_ANDROID 2013-10-30 12:43 3203人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8784770.html
Copyright © 2020-2023  润新知