写点什么

11-SpringSecurity:Session 共享

  • 2022 年 5 月 09 日
  • 本文字数:1083 字

    阅读完需:约 4 分钟

<artifactId>spring-boot-starter-test</artifactId>


<scope>test</scope>


</dependency>


</dependencies>


  • 配置文件


server:


port: 8000


spring:


redis:


host: 10.16.1.110


port: 6379


pool.max-idle: 8


pool.min-idle: 0


pool.max-active: 8


pool.max-wait: -1


password:


timeout: 1000


  • 资源接口


创建资源接口: 登录之后默认跳转 / ,展示当前服务的端口号。


@RestController


public class SessionController {


@Value("${server.port}")


Integer port;


@GetMapping(value = "/")


public String greeting() {


return String.valueOf(port);


}


}

[](()实验 0:伪分布式集群 Session 共享

开启两个服务:


  1. 一个运行在 8000 端口:http://localhost:8000

  2. 一个运行在 9000 端口:http://localhost:9000


Note:在 Idea 中,可通过以下配置可同时运行一个服务的多个实例。



实验步骤:


  1. 在浏览器中先访问 http://localhost:8000 ,这时要求登录,输入用户名:user,密码在控制台生成;登录成功后显示: 8000

  2. 然后继续在当前浏览器新开一个 Tab,访问 http://localhost:9000 ,不出意外,会直接显示(无需再次登录): 9000

  3. 这样,便通过一个依赖 spring-session-data-red **《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】** is 实现了 Session 共享(就不贴图了);


Note:


  • 由于仍然采用的传统的 Cookie-Session 模式,所以上述实验必须在同一浏览器下进行,在请求时,浏览器会自动带上 Cookie (其中存了 SessionID);

  • 实际生产中,通常通过Nginx进行反向代理,仅对外提供一个域名或接口地址,实现集群的负载均衡;

[](()实验 1:再次验证 Session 共享

Controller 中新增两个接口:一个写入键值对,一个读取键值,接口如下:


@RestController


public class SessionController {


@Value("${server.port}")


Integer port;


@GetMapping(value = "/")


public String greeting() {


return String.valueOf(port);


}


@GetMapping(value = "/session/set")


public String setSession(HttpSession session) {


session.setAttribute("key", "value");


return port + ": Session updated.";


}


@GetMapping(value = "/session/get")


public String getSession(HttpSession session) {


Object value = session.getAttribute("key");


return port + ":" + (String) value;


}


}


实验步骤:


  1. 在浏览器中先访问 http://localhost:8000/session/set ,这时显示: 8000: Session updated.

  2. 然后继续在当前浏览器新开一个 Tab,访问 http://localhost:9000/session/get ,不出意外,会显示: 9000:value

  3. 这样,实现了自定义键值对的 Session 共享;

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
11-SpringSecurity:Session共享_Java_爱好编程进阶_InfoQ写作社区