SpringBoot怎么整合SpringSession实现分布式登录
导读:本文共1688.5字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:Session 共享比如两个域名:aaa.yupi.combbb.yupi.com如果要共享 cookie,可以种一个更高层的公共域名,比如 yupi.com为什么服务器 A 登录后,请求发到服务器 B,不认识该用户?用户在 A 登录,所以 session(用户登录信息)存在了 A 上结果请求 B 时,B 没有用户信息,所以不认识。解决方案共享存储 ,而不是把数据放到单台服务器的内存中Spring... ...
目录
(为您整理了一些要点),点击可以直达。Session 共享
比如两个域名:
aaa.yupi.com
bbb.yupi.com
如果要共享 cookie,可以种一个更高层的公共域名,比如 yupi.com
为什么服务器 A 登录后,请求发到服务器 B,不认识该用户?
用户在 A 登录,所以 session(用户登录信息)存在了 A 上
结果请求 B 时,B 没有用户信息,所以不认识。
解决方案
共享存储 ,而不是把数据放到单台服务器的内存中
SpringBoot整合SpringSession实现分布式登录
引入 redis,能够操作 redis:
<!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.6.4</version>
</dependency>
引入 spring-session 和 redis 的整合,使得自动将 session 存储到 redis 中:
<!--https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.6.3</version>
</dependency>
修改 spring-session 存储配置 spring.session.store-type
默认是 none,表示存储在单台服务器
store-type: redis,表示从 redis 读写 session
redis:
host:localhost
port:6379
session:
timeout:60
store-type:redis
效果:
/*
@author刘宇浩
*/
@RestController
@RequestMapping("/session")
publicclassSessionController{publicstaticfinalStringkey="USERLOGINSTATE";
@GetMapping("/set")
publicResultsetSession(HttpServletRequestrequest){
Useruser=newUser();
user.setClassName("21软件3");
user.setName("lyl");
request.getSession().setAttribute(key,user);
returnResultGenerator.genSuccessResult(200,"成功");
}
@GetMapping("/get")
publicResultgetSession(HttpServletRequestrequest){
Useruserloginstate=(User)request.getSession().getAttribute(key);
System.out.println(userloginstate.getName());
System.out.println(userloginstate.getClassName());
returnResultGenerator.genSuccessResult(200,"成功");}
}
SpringBoot怎么整合SpringSession实现分布式登录的详细内容,希望对您有所帮助,信息来源于网络。