您的位置:首页 > 数据库 > Redis

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

2017-09-02 23:22 393 查看
安装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;

@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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐