springboot+redis单点登陆session共享

单点登陆(SSO)的定义是在多个应用系统中,用户只须要登陆一次就能够访问全部相互信任的应用系统。java

如今就是用springboot和redis来完成session共享。web

1.导入相关依赖。(web和redis相关)redis

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.1.RELEASE</version>
	</parent>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

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

	</dependencies>

2.配置redisspring

@Configuration  
@EnableRedisHttpSession  
public class RedisSessionConfig {  
}

其中@EnableRedisHttpSession注解,开启redis集中式session管理,把全部的session都存放到了redis中springboot

3.配置application.yml文件,端口的设置以及redis的链接地址和端口号配置session

server:
  port: 8080
spring:
  redis:
    host: 192.168.56.150
    port: 6379

为了模拟共享,须要开启另个服务,server端口号能够设置8081,其余保持不变app

server:
  port: 8081
spring:
  redis:
    host: 192.168.56.150
    port: 6379

4.控制层代码 spring-boot

@RestController  
@RequestMapping("/admin")
public class RedisController {  
	
    @GetMapping("/setSessionId")  
    public String setredisResult(HttpServletRequest request){
    	HttpSession session = request.getSession();
    	session.setAttribute("sessionId","100");
    	return "设置ok...";
    }
    @GetMapping("/getSessionId")
	public String redisResult(HttpServletRequest request) {
		HttpSession session = request.getSession();
		String sessid = (String) session.getAttribute("sessionId");
		return "sessionId:"+sessid;
	}
}

5.运行server8080和server8081code

访问http://localhost:8080/admin/setSessionId 设置sessionIdserver

查看redis,能够看到redis中已经存在springsession相关数据,此时也能够看到设置的sessionId

访问另外一个服务http://localhost:8081/admin/getSessionId

不一样服务sessionId共享成功。

以上就是session共享简单的小例子。

相关文章
相关标签/搜索