shiro和redis一起使用

news2025/1/12 16:13:23

Shiro 缓存配置
当我们进行授权操作时,每次都会从数据库查询用户权限信息,为了提高授权性能,可以将用户权限信息查询出来以后进行缓存,下次授权时从缓存取数据即可。 Shiro 中内置缓存应用实现,其步骤如下:
第一步:在 SpringShiroConfig 中配置缓存 Bean 对象(Shiro 框架提供)。

@Bean	public CacheManager shiroCacheManager(){	         
return new MemoryConstrainedCacheManager();	
}

说明:这个 CacheManager 对象的名字不能写 cacheManager,因为 spring 容器中已经存在一个名字为 cacheManager 的对象了。

第二步:修改 securityManager 的配置,将缓存对象注入给 SecurityManager 对象。

	@Bean	public SecurityManager securityManager(   Realm realm,	 CacheManager cacheManager) {	                 
	DefaultWebSecurityManager sManager=new DefaultWebSecurityManager();	                 
	sManager.setRealm(realm);	                 
	sManager.setCacheManager(cacheManager);	                 
	return sManager;
		}

说明:对于 shiro 框架而言,还可以借助第三方的缓存产品(例如 redis)对用户的权限信息进行 cache 操作.

Shiro 记住我
记住我功能是要在用户登录成功以后,假如关闭浏览器,下次再访问系统资源(例如首页 doIndexUI)时,无需再执行登录操作。 客户端业务实现 在页面上选中记住我,然后执行提交操作,将用户名,密码,记住我对应的值提交到控制层,如图所示:
在这里插入图片描述
其客户端 login.html 中关键 JS 实现:

 function doLogin(){	          
 var params={	                 
 username:$("#usernameId").val(),	                 
 password:$("#passwordId").val(),	                 
 isRememberMe:$("#rememberId").prop("checked"),	          
 }	          
 var url="user/doLogin";	         
  console.log("params",params);	          
  $.post(url,params,function(result){	                  
  if(result.state==1){	                        
  //跳转到 indexUI 对应的页面	                        
  location.href="doIndexUI?t="+Math.random();	                  
  }else{	                        
  $(".login-box-msg").html(result.message);	                 
   }	                  
   return false;//防止刷新时重复提交	          
   });	  
   }

服务端业务实现
服务端业务实现的具体步骤如下:
第一步:在 SysUserController 中的 doLogin 方法中基于是否选中记住我,设置 token 的 setRememberMe 方法。
在这里插入图片描述
第二步:在 SpringShiroConfig 配置类中添加记住我配置,关键代码如下:
在这里插入图片描述
第三步:在 SpringShiroConfig 中修改 securityManager 的配置,为 securityManager 注入 rememberManager 对象。
在这里插入图片描述

第四步:修改 shiro 的过滤认证级别,将/**=author 修改为/**=users

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/703849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Talk | 阿姆斯特丹大学博士生胡涛:计算机视觉中的标签效率学习

本期为TechBeat人工智能社区第509期线上Talk! 北京时间6月29日(周四)20:00,阿姆斯特丹大学博士生—胡涛的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “计算机视觉中的标签效率学习”,届时将从生成式学习、数…

Drools用户手册翻译——第二章 入门(上)

因为篇幅原因,所以分为上下两个部分,主要就是通过一个交通违章项目的例子,带你先粗略感受一下决策模型的使用流程,总体来说有详细,也有没说清的地方,如果想要了解一下决策模型,可以进来了解一下…

试用有奖:在线试用stable diffusion 模型生成优质人物好图

一、活动介绍 InsCode是一个集成了在线IDE、在线AI编程、在线算力租赁、在线项目部署以及在线SD 模型使用的综合代码开发平台。不论你是初级软件工程师,还是AI大模型爱好者,InsCode都能帮助你快速编写代码,运行项目。甚至在这里你还可以一键…

某平台登录之电话号码加密

抓包 POST /******/common/****** HTTP/1.1 Host: ****** Content-Type: application/json; charsetUTF-8 Host: ****** User-Agent: okhttp/3.14.9{"type":"login","apor":"******************"}加密 由于信息原因就不泄露了 此处只…

Linux系统编程:进程的创建、终止和替换

目录 一. 进程创建 1.1 fork函数的使用 1.2 fork函数的底层实现 1.3 子进程创建的写时拷贝问题 二. 进程的退出 2.1 进程退出的场景和方法 2.2 exit和_exit函数 三. 进程的等待 3.1 为什么要有进程等待 3.2 进程等待的方法 3.2.1 进程等待的相关函数 3.2.2 进程的阻…

JS知识点汇总(六)--作用域链this

1. 什么是作用域链? 作用域,即变量(变量作用域又称上下文)和函数生效(能被访问)的区域或集合 换句话说,作用域决定了代码区块中变量和其他资源的可见性 1. 作用域分类 一般将作用域分成&#x…

TDengine 发布 IoT 场景下 3.0 性能对比分析报告,全方位超越 InfluxDB TimescaleDB

6 月 26 日,涛思数据旗下时序数据库(Time Series Database) TDengine 正式发布 IoT 场景下 TDengine 3.0 性能对比分析报告,该报告在 IoT 场景下从数据写入、压缩和查询等维度,对比了 TDengine 与市场其他流行的时序数…

Linux系统安装QQ最新版

腾讯在2023-05-30更新了linux版的qq,这次界面终于不再复古,好看多了。 安装步骤: 1.进入官网,寻找合适的安装包下载 https://im.qq.com/linuxqq/index.shtml 选择跟自己计算机匹配的版本,一般都是X86,如…

VMware共享文件夹

当虚拟机需要使用宿主机里的文件时,就需要在虚拟机设置里添加共享文件夹,大概过程如下: 虚拟机设置: 在centos里,完成上述操作后会生成一个目录 /mnt/hgfs 宿主机里的文件就在这个目录里可以看到并使用了。

编译linux内核(二)

编译linux内核 1. 准备工作1.1 下载内核文件1.2 环境准备1.3 内核命名规则 2. 编译内核2.1 升级gcc2.2 make menuconfig其他报错2.3 配置选项2.4 编译内核2.5 安装模块2.6 安装内核2.7 验证内核 3. 制作内核文件3.1 创建磁盘文件3.2 磁盘分区3.3 将磁盘分区关联到/dev/loop7设备…

化学理论知识vr沉浸式教学软件推动立足“学生老师双主体”一体化的教学模式改革

VR虚拟仿真是基于虚拟现实、3D技术、计算机技术等搭建起来的一套具有数字化、智慧化的智能教学系统,它以学生学习为中心,探索学科内容,使用VR虚拟现实将学科内容以3D立体化形式呈现,培养学生的思维创新、实操技能。 VR虚拟仿真技术…

【数据库基础】Mysql基本概念讲解与实操

文章目录 数据库基础服务器,数据库,表关系Mysql的架构Sql分类 库的操作修改默认的编码格式两种校验修改数据库删除数据库备份和恢复观察用户,查看连接 表的操作修改表字段长度删除某一列修改表名修改列名称 数据类型小数类型floatdecimal字符…

Hystrix

一、Hystrix(豪猪)简介 1、Hystrix的设计目的 (1)对依赖服务调用时出现的调用延迟和调用失败进行控制和容错保护。 (2)阻止某一个依赖服务的故障在整个系统中蔓延,服务A->服务B->服务C,服务C故障了…

MySQL - Delete 和 Truncate 的区别

1. DELETE 命令 语法 : delete from 表名 [where 条件] -- 删除数据 (避免这样写, 会全部删除) DELETE FROM student;-- 删除指定数据 DELETE FROM student WHERE id 1; 2. TRUNCATE 命令 作用 : 完全清空一个数据库表, 表的结构和索引约束不会变. -- 清空 stu…

大体积mbtiles影像地图文件用什么软件浏览?

mbtiles格式简称mbt,是一种影像地图文件。PC端和手机端都有软件可以加载留着mbt格式的影像地图。 电脑桌面端 电脑端上的软件可以使用“图新地球”,直接把mbt文件拖到地图上即可,非常简便。 手机端 可以从华为应用商店下载“外业精灵”app…

Meta提出用向量检索来改进图像描述模型

出品人:Towhee 技术团队 作者:王翔宇 顾梦佳 随着深度神经网络的发展,自动图像描述技术取得了令人瞩目的进展。然而,现有的方法主要注重生成的描述与人类参考描述之间的相似性,却忽视了描述在实际应用中的特定目标。Me…

用户体验测试要怎么做?

用户体验测试是软件和应用程序开发的关键环节,它可以帮助团队了解如何优化产品以提高用户满意度,那用户体验测试要怎么做?下面是一些进行用户体验测试的最佳实践: 制定测试计划 在进行用户体验测试之前,您需要制定测试…

【Gradio】Could not create share link

Gradio是MIT的开源项目,用于构建机器学习和数据科学演示和 Web 应用,挺有意思的,感兴趣的同学可以去Gradio官网查看。 本地环境: - OS: Win 11 - Pyton: 3.10.11 - Gradio: 3.29.0 Gradio库的安装(Python 需要3.7 版本): - pip …

6.5 指令与文件的搜寻

6.5.1 指令文件名的搜寻 在终端机模式当中,连续输入两次[tab]按键就能够知道使用者有多少指令可以下达。 which (寻找“可执行文件”) 这个指令是根据“PATH”这个环境变量所规范的路径,去搜寻“可执行文件”的文件名。所以&…

iOS distribution发布证书过期或者被手动revoke了app会被下架吗?

在距离distribution 证书过期一个月(或被手动revoke了)的时候会受到apple的邮件 虽然distribution过期(或者被手动revoke)了,如果你的开发者账号是company(公司)类型或个人类型的,只…