并不复杂,只需4步搞定Shiro集成redis实现会话共享

在分布式场景中,通过将会话信息存储在Redis中实现共享。本文介绍了Shiro集成Redis实现会话共享的四个简单步骤,包括导入starter包、配置SessionManager、启动验证,以及解决与spring-boot-devtools的兼容问题。通过这些步骤,可以确保在不同服务之间保持登录状态的一致性。
摘要由CSDN通过智能技术生成

集群的分布式场景中,我们需要把众多服务的会话状态保持一致,常见的就是把会话信息保存到redis中实现共享,那么你知道shiro集成redis实现会话共享有多简单吗?真的只需要4步!


在一些分布式场景中,比如一个简单负载均衡场景,一个nginx,反向代理到两个tomcat,tomcat运行这同样的项目,那么这时候,服务的会话需要共享,因为我们已经使用了shiro来完成我们的认证授权逻辑,那么shiro完成登录之后,如何让另外一个服务同时也是登录状态呢?

我们延用上篇文章的项目代码,使用两个端口8080、8081分别启动项目。

  • http://localhost:8080

  • http://localhost:8081

有些同学不知道怎么用idea同一个项目分别启动两个端口,其实很简单,只需要在 Run/DebugConfigurations的 VM options上,指定启动端口 -Dserver.port=8081即可! 

ok,分别启动8080和8081项目之后,登录8080项目,然后访问8081,发现8081未登录!图示如下:

那么,如何才能8080登录之后,8081也同时完成登录呢?

特殊解决方式

其实在负载均衡集群中,有些人是这样解决问题,给ip指定服务,比如某个用户请求经过nginx反向代理到8080服务,那么nginx上指定 ip_hash:依据ip分配方式,那么这个用户就一直访问同一个服务,不会访问到8081服务,所以用户就一直是访问统一服务,所以在用户看来,他就一直是登录状态的。

但是,这是有缺陷的,因为ip和服务绑定了,加入这个服务挂了之后,是不会转发到其他服务,所以对这用户来说,就访问异常。

所以我们需要使用更常用的负载均衡策略,比如轮询、权重等。

回顾shiro的架构与组件

ok,进入正题,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值