基于SpringBoot,SpringSession和redis的会话共享
2017-09-02 23:22
393 查看
安装redis
配置redis.conf,允许外部连接
使用IntelliJ IDEA创建Spring Boot工程,选择web, redis, session.
LoginController.java
创建文件config.java
配置文件application.yaml
配置文件spring.xml
配置hosts文件
127.0.0.1 www.example.com
127.0.0.1 passport.example.com
运行程序,通过浏览器访问passport.example.com:8000
访问www.example.com:8000
JSESSIONID的内容相同,说明实现了会话共享。
接下来在passport进行登录
切换到www
一个简单的单点登录系统就实现了。
源代码工程
https://github.com/chenhaifeng2016/springsessiondemo
$ wget http://download.redis.io/releases/redis-4.0.1.tar.gz $ tar xzf redis-4.0.1.tar.gz $ cd redis-4.0.1 $ make
配置redis.conf,允许外部连接
使用IntelliJ IDEA创建Spring Boot工程,选择web, redis, session.
LoginController.java
package com.example.springsessiondemo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @Controller public class LoginController { @RequestMapping("/") @ResponseBody public String home(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); if (user == null){ return "用好未登录" + session.getId(); } else { return "用好已登录" + session.getId(); } } @RequestMapping("/login") @ResponseBody public String login(HttpServletRequest request){ User user = new User(); user.setUsername("chf"); user.setPassword("pass"); request.getSession().setAttribute("user", user); return "登录成功 " + request.getSession().getId(); } }
创建文件config.java
@Configuration @ImportResource(locations={"classpath:spring.xml"}) public class Config { }
配置文件application.yaml
server: port: 8000 spring: session: store-type: redis redis: host: 10.0.0.201 port: 6379 password:
配置文件spring.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="defaultCookieSerializer" class="org.springframework.session.web.http.DefaultCookieSerializer"> <property name="domainName" value="example.com"/> <property name="cookieName" value="JSESSIONID"/> <property name="cookiePath" value="/" /> <!-- <property name="domainNamePattern" value="^.+?\.(\w+\.[a-z]+)$"></property>--> </bean> <bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> <property name="maxInactiveIntervalInSeconds" value="1800" /> <property name="cookieSerializer" ref="defaultCookieSerializer"/> </bean> </beans>
配置hosts文件
127.0.0.1 www.example.com
127.0.0.1 passport.example.com
运行程序,通过浏览器访问passport.example.com:8000
访问www.example.com:8000
JSESSIONID的内容相同,说明实现了会话共享。
接下来在passport进行登录
切换到www
一个简单的单点登录系统就实现了。
源代码工程
https://github.com/chenhaifeng2016/springsessiondemo
相关文章推荐
- springboot利用springsession实现redis共享session,并且自定义sessionid
- 基于Spring Boot/Spring Session/Redis的分布式Session共享解决方案
- 基于Spring Boot-Spring Session-Redis的分布式Session共享解决方案
- SpringSession集成redis实现session共享(No bean named 'springSessionRepositoryFilter' available)
- 基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(四)【构建链路调用监控系统】
- 使用springboot+redis实现session共享
- spring boot + redis 实现session共享
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【四】【编写基础开发工具】
- 使用springboot+redis实现session共享
- spring boot整合redis实现shiro的分布式session共享的方法
- 基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(十一)【权限架构生产者(组织架构)】
- SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例
- 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【五】【编写基础代码快速生成工具】
- 基于springboot+redis+bootstrap+mysql开发一套属于自己的分布式springcloud云权限架构(三)【构建注册中心】
- 基于Spring Boot+jsoup+redis抓取CSDN每周干货的RESTFul爬虫
- 详解springboot中redis的使用和分布式session共享问题
- 基于Spring-Session实现会话共享
- Spring Boot系列(七)Spring Boot使用Redis实现session共享
- 基于Spring session data redis的session共享
- spring boot + redis 实现session共享