SpringBoot怎么整合SpringSession实现分布式登录(springboot,springsession,开发技术)

时间:2024-05-04 00:35:02 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

Session 共享

比如两个域名:

  • aaa.yupi.com

  • bbb.yupi.com

  • 如果要共享 cookie,可以种一个更高层的公共域名,比如 yupi.com

为什么服务器 A 登录后,请求发到服务器 B,不认识该用户?

用户在 A 登录,所以 session(用户登录信息)存在了 A 上

结果请求 B 时,B 没有用户信息,所以不认识。

SpringBoot怎么整合SpringSession实现分布式登录

解决方案

共享存储 ,而不是把数据放到单台服务器的内存中

SpringBoot怎么整合SpringSession实现分布式登录

SpringBoot整合SpringSession实现分布式登录

引入 redis,能够操作 redis:

<!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis--&gt;
<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--&gt;
<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实现分布式登录的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Golang中net/http包的实现原理是什么下一篇:

21 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18