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”整合了Spring Boot、Spring Security、Spring Session、Redis、Mybatis-Plus以及Swagger等技术,旨在构建一个强大的、安全的、具有...
1. **配置依赖**:在项目的pom.xml文件中添加Spring Session和Redis的依赖。确保包含spring-session-data-redis、spring-boot-starter-data-redis以及相应的版本。 2. **配置Redis连接**:在application.properties...
标题 "Spring Boot + Spring Session + Redis" 涉及到的是在Java开发中,使用Spring Boot框架集成Spring Session和Redis来实现会话管理的技术方案。这个解决方案主要解决分布式系统中的session共享问题,使得用户在...
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建
要使用SpringSession与Redis进行Session共享,首先你需要在你的项目中添加相关的依赖。"sprig redis依赖jar"可能指的是Spring Session和Redis的相关JAR包,这通常包括Spring Session的核心库、Spring Data Redis以及...
- 首先,在项目中引入SpringSession和Redis的相关依赖。 - 配置Spring Boot的`application.properties`或`application.yml`,设置Redis连接信息,如主机名、端口、密码等。 - 在Spring Boot的配置类中,配置`...
在Java Web开发中,Spring Session是一个非常重要的组件,它提供了会话管理的解决方案,使得...通过使用Redis作为存储,结合Spring Session的便捷性和Jedis的高效访问,可以在复杂环境中保证会话数据的一致性和可靠性。
在实现 session 共享之前,需要在项目中引入相关依赖项,包括: * Spring Data Redis:用于与 Redis 进行交互 * Jedis:用于连接 Redis * Shiro Spring:用于权限控制 3. Redis 配置 在使用 Redis 之前,需要进行...
1. **配置Spring-Session**:在Spring Boot项目中,添加spring-session和spring-session-data-redis依赖,并在配置文件中设置Redis的相关连接信息。 2. **启用Spring-Session**:在Spring Boot的主配置类上添加@...
标题中的“Spring-session2整合spring5+redis”指的是在Spring框架的第五个主要版本(Spring 5)中,集成Spring Session 2与Redis数据库来管理Web应用的会话(Session)。Spring Session是一个开源项目,旨在提供一...
- Struts2拦截器:如果需要在Struts2中使用缓存,可以自定义拦截器,实现请求前检查缓存,请求后更新缓存的功能。 6. **优化与实践**: - 使用Redis的发布/订阅(Pub/Sub)功能进行消息通信,例如通知缓存更新。 -...
在Web应用中,Redis 可以存储session数据,避免在分布式环境中跨服务器共享session的问题。此外,Redis 还支持发布/订阅模式,可用于消息队列,提高系统的实时性。 在"SpringMVC+mybatis+shiro+redis 项目整合demo...
3. **集成Spring Security**:如果项目中使用了Spring Security进行权限控制,那么需要配置它使用我们的SessionRepository。这样,当用户登录时,Spring Security会将创建的Session信息存入Redis。 4. **Nginx配置*...
在本项目中,Spring Session 配合Redis 实现了session的分布式存储,解决了多台服务器下的session同步问题,确保用户会话的一致性。 通过以上组件的集成,项目能够实现高效的数据库操作、灵活的Web服务构建、快速的...
项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为...
1. **添加依赖**:在项目的pom.xml文件中,添加Spring Session和Redis的相关依赖,如`spring-session-data-redis`和`redisson`或`jedis`客户端库。 2. **配置Redis连接**:在Spring的配置文件中,设置Redis的连接...
在IT行业中,Spring Boot、Redis和MyBatis-Plus是三个非常重要的技术组件,它们各自在不同的领域发挥着关键作用。下面将详细讲解这三个技术及其整合应用。 **Spring Boot** Spring Boot是由Pivotal团队提供的全新...
为了使用Spring-Session,首先需要在项目中添加相应的Maven依赖。下面展示了两个关键的依赖项: ```xml <groupId>org.springframework.session <artifactId>spring-session-data-redis <version>1.2.1.RELEASE ...
其他服务器在处理请求时,可以从Redis中获取并使用该session数据。 实现步骤包括: 1. **安装和配置Redis**:首先,你需要在服务器上安装Redis并确保其正常运行。配置Redis以持久化session数据,防止服务重启丢失...