springboot+shiro+redis 分布式篇

本文介绍在分布式系统中,如何利用Shiro框架和Redis实现用户登录信息的跨服务器共享,解决用户反复登录的问题。通过重写SessionDao,将用户会话信息存储在Redis中,实现高效的数据共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

       当前很多公司的项目都采用分布式或者微服务架构来设计,这个时候在用户登录系统上就会产生问题,用户登录时的用户信息如何保证共享,如果不共享,那么在分布式架构下用户会反复登录,这样显然是不合理的。此时问题点就来了,如何保证用户登录信息共享呢?

二、shiro用户信息共享的核心思想

     shiro框架做用户的登录和授权时,主要是采用session来进行处理,当用户登录时,shiro会将用户信息相关信息存储到session里并设置唯一的sessionId,sessionId作为cookie传给前端,前端登录后下次再访问时,shiro会去解析cookie的值去取session值,然后进行判断用户是否登录合法等操作。此时读者就可以看到,将session进行共享即可。共享的方式很多,可以采用数据库共享,mogodb共享,redis共享。总之采用一种可以存储数据且可以独立部署的工具作为中间转换工具都可,此处是采用redis进行共享的。

三、代码实现

    shiro的session的在SessionDao中进行CRUD等一系列操作,此处需要重写其中的方法,将session的存储和获取修改为从redis中取。

package com.dx.shiro.shiro_deom.Test;

import org.apache.shiro.session.Session;
import org.apache.shiro.session.UnknownSessionException;
import org.apache.shiro.session.mgt.eis.AbstractSessionDAO;
import org.springframework.beans.facto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值