`

springSession+redis在项目中的使用

阅读更多

   1、前言,session一直都是我们做集群时需要解决的一个难题,过去我们可以从serlvet容器上解决,比如开源servlet容器-tomcat提供的tomcat-redis-session-manager、memcached-session-manager,现在我们可以通过springSession实现session在集群中的共享。

    Spring Session提供了一个用于管理用户会话信息的API和实现,同时也支持集群会话而不受限于特定于应用程序容器的解决方案。

   2、支持功能 

     1)、springSession支持将session存储到第三方存储容器,如redis、mysql中,框架提供了redis、jdbc等多种存储session的容器的方式。 

     2)、多个浏览器会话 - Spring Session支持在单个浏览器实例(即类似于Google的多个经过身份验证的帐户)中管理多个用户的会话,同一个浏览器同一个网站,支持多个session共享。 

      3)、Restful API,Spring Session允许在头文件中提供会话ID以使用RESTful API

      4)、WebSocket - 提供HttpSession在接收WebSocket消息时保持活动的能力。   

    3、项目集成springSession,以springboot为例,使用redis存储session,更多请参考:https://docs.spring.io/spring-session/docs/1.3.1.RELEASE/reference/html5/

    1)、添加pom         

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

     2)、配置springsession   

@Configuration
//session有效时长4小时
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 14400)
public class SpringSessionConfig {

}

    3)、springSession的sessionID传递方式接口 

           1.cookie方式 :CookieHttpSessionStrategy

           2.http header 方式:HeaderHttpSessionStrategy

           默认的是以cookie方式实现

    4)、基于默认的sessionId传递方式,添加cookie配置    

#cookie名称
server.session.cookie.name=MY_PROJECT_SESSION
#cookie会话的域
server.session.cookie.domain=regulus.com
#会话cookie的路径,基于根路径
server.session.cookie.path=/

   更多配置   

server.session.cookie.comment = #注释会话cookie。
server.session.cookie.domain = #会话cookie的域。
server.session.cookie.http-only =#“HttpOnly”标志为会话cookie。
server.session.cookie.max-age = #会话cookie的最大年龄(以秒为单位)。
server.session.cookie.name = #会话cookie名称。
server.session.cookie.path = #会话cookie的路径。
server.session.cookie.secure = #“Secure”标志为会话cookie。
server.session.persistent = false #在重新启动之间持续会话数据。
server.session.store-dir = #用于存储会话数据的目录。
server.session.timeout = #会话超时(秒)。
server.session.tracking-modes =#会话跟踪模式(以下一个或多个:“cookie”,“url”,“ssl”)。

   5)、springSession基于cookie的配置    

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 14400)
public class SpringSessionConfig {

    @Bean
    public CookieSerializer cookieSerializer(ServerProperties serverProperties) {
        Cookie cookie = serverProperties.getSession().getCookie();
        DefaultCookieSerializer bean = new DefaultCookieSerializer();
        if (cookie.getMaxAge() != null) {
            bean.setCookieMaxAge(cookie.getMaxAge());
        }
        if (cookie.getName() != null) {
            bean.setCookieName(cookie.getName());
        }
        if (cookie.getPath() != null) {
            bean.setCookiePath(cookie.getPath());
        }
        if (cookie.getDomain() != null) {
            bean.setDomainName(cookie.getDomain());
        }
        if (cookie.getHttpOnly() != null) {
            bean.setUseHttpOnlyCookie(cookie.getHttpOnly());
        }
        if (cookie.getSecure() != null) {
            bean.setUseSecureCookie(cookie.getSecure());
        }
        return bean;
    }

}

   4、基于以上配置,就可以在项目中,使用springSession了,用法和session的用法一致

   

分享到:
评论

相关推荐

    Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager.zip

    本项目“Springboot+SpringSecurity+SpringSession+Redis+Mybatis-Plus+Swwager”整合了Spring Boot、Spring Security、Spring Session、Redis、Mybatis-Plus以及Swagger等技术,旨在构建一个强大的、安全的、具有...

    Spring Session + redis实现session共享

    1. **配置依赖**:在项目的pom.xml文件中添加Spring Session和Redis的依赖。确保包含spring-session-data-redis、spring-boot-starter-data-redis以及相应的版本。 2. **配置Redis连接**:在application.properties...

    Spring Boot + Spring Session + Redis

    标题 "Spring Boot + Spring Session + Redis" 涉及到的是在Java开发中,使用Spring Boot框架集成Spring Session和Redis来实现会话管理的技术方案。这个解决方案主要解决分布式系统中的session共享问题,使得用户在...

    基于Springboot+Mybatis+ SpringMvc+springsecrity+Redis完整网站后台管理系统

    项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建

    SpringSession+redis共享jar包

    要使用SpringSession与Redis进行Session共享,首先你需要在你的项目中添加相关的依赖。"sprig redis依赖jar"可能指的是Spring Session和Redis的相关JAR包,这通常包括Spring Session的核心库、Spring Data Redis以及...

    SpringSession+Redis实现Session共享案例

    - 首先,在项目中引入SpringSession和Redis的相关依赖。 - 配置Spring Boot的`application.properties`或`application.yml`,设置Redis连接信息,如主机名、端口、密码等。 - 在Spring Boot的配置类中,配置`...

    spring-session+spring+redis的依赖包

    在Java Web开发中,Spring Session是一个非常重要的组件,它提供了会话管理的解决方案,使得...通过使用Redis作为存储,结合Spring Session的便捷性和Jedis的高效访问,可以在复杂环境中保证会话数据的一致性和可靠性。

    springboot +shiro+redis实现session共享(方案二)1

    在实现 session 共享之前,需要在项目中引入相关依赖项,包括: * Spring Data Redis:用于与 Redis 进行交互 * Jedis:用于连接 Redis * Shiro Spring:用于权限控制 3. Redis 配置 在使用 Redis 之前,需要进行...

    nginx+spring-session+redis 实现session共享

    1. **配置Spring-Session**:在Spring Boot项目中,添加spring-session和spring-session-data-redis依赖,并在配置文件中设置Redis的相关连接信息。 2. **启用Spring-Session**:在Spring Boot的主配置类上添加@...

    Spring+Struts2+hibernate+Redis整合

    - Struts2拦截器:如果需要在Struts2中使用缓存,可以自定义拦截器,实现请求前检查缓存,请求后更新缓存的功能。 6. **优化与实践**: - 使用Redis的发布/订阅(Pub/Sub)功能进行消息通信,例如通知缓存更新。 -...

    springMVC+mybatis+shiro+redis 项目整合demo

    在Web应用中,Redis 可以存储session数据,避免在分布式环境中跨服务器共享session的问题。此外,Redis 还支持发布/订阅模式,可用于消息队列,提高系统的实时性。 在"SpringMVC+mybatis+shiro+redis 项目整合demo...

    Spring-session2整合spring5+redis

    标题中的“Spring-session2整合spring5+redis”指的是在Spring框架的第五个主要版本(Spring 5)中,集成Spring Session 2与Redis数据库来管理Web应用的会话(Session)。Spring Session是一个开源项目,旨在提供一...

    spring+redis整合

    3. **集成Spring Security**:如果项目中使用了Spring Security进行权限控制,那么需要配置它使用我们的SessionRepository。这样,当用户登录时,Spring Security会将创建的Session信息存入Redis。 4. **Nginx配置*...

    spring4+springmvc+mybatis3+redis2.8+spring-session框架搭建

    在本项目中,Spring Session 配合Redis 实现了session的分布式存储,解决了多台服务器下的session同步问题,确保用户会话的一致性。 通过以上组件的集成,项目能够实现高效的数据库操作、灵活的Web服务构建、快速的...

    Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级报表后台管理系统.rar

    项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为...

    ssm+redis 实现session共享

    1. **添加依赖**:在项目的pom.xml文件中,添加Spring Session和Redis的相关依赖,如`spring-session-data-redis`和`redisson`或`jedis`客户端库。 2. **配置Redis连接**:在Spring的配置文件中,设置Redis的连接...

    Springboot+redis+mybatisplus实例

    在IT行业中,Spring Boot、Redis和MyBatis-Plus是三个非常重要的技术组件,它们各自在不同的领域发挥着关键作用。下面将详细讲解这三个技术及其整合应用。 **Spring Boot** Spring Boot是由Pivotal团队提供的全新...

    学习Spring-Session+Redis实现session共享

    为了使用Spring-Session,首先需要在项目中添加相应的Maven依赖。下面展示了两个关键的依赖项: ```xml &lt;groupId&gt;org.springframework.session &lt;artifactId&gt;spring-session-data-redis &lt;version&gt;1.2.1.RELEASE ...

    解决Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程问题

    在本文中,我们主要探讨了在使用Spring Session以及Redis作为存储方式时,由于消息监听导致创建大量线程的问题及其解决方案。我们将从Spring Session的基础知识、Redis在Spring Session中的作用、监听机制导致线程...

Global site tag (gtag.js) - Google Analytics