基于SpringBoot,SpringSession和redis的会话共享

来源:互联网 发布:五十知天命六十耳顺 编辑:程序博客网 时间:2024/06/05 20:46

安装redis

$ 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;@Controllerpublic 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: 8000spring:  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

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新生儿脐带有脓怎么办 婴儿漾奶呼呼吐怎么办 初生婴儿黑白颠倒怎么办 新生儿6天拉肚子怎么办 婴儿眼里有泪水怎么办 十个月宝宝拉肚子怎么办 腹泻十几天了怎么办 新生儿37.3度要怎么办 婴儿发烧37.3度怎么办 小孩子太吵了怎么办 一年级孩子学习差怎么办 马克笔涂错了怎么办 孩子说话不流利怎么办 儿童最近不吃饭怎么办 不爱吃饭偏瘦怎么办 一岁半小宝宝不爱吃饭怎么办 家养的小鸡打架怎么办 小鸡关在一起打架怎么办 小孩感冒出汗多怎么办 宝宝感冒出汗了怎么办 出汗多怎么办%3f 孩子睡觉出汗多怎么办 三年级孩子成绩下滑怎么办 幼儿数学不开窍怎么办 孩子一年级学习跟不上怎么办 孩子学习不认真怎么办 孩子平时不细心怎么办? 脖子出现黑圈怎么办 简历留白太多怎么办 excel数字外面加个圈怎么办 电脑输入法数字数不上怎么办 大班教案迷路了怎么办 迷路了怎么办活动反思 头突然眩晕是怎么办 孩子学习拖拉懒惰怎么办 头发晕想睡觉怎么办 五年级错别字多怎么办 入党志愿书写错字怎么办 高中不会写作文怎么办 考试不会写作文怎么办 高考不会写作文怎么办