shiro和redis一起使用

news/2024/12/14 12:38:21/

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.ppmy.cn/news/652225.html

相关文章

Yocto环境搭建

1、安装必备软件包,执行如下指令: sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-…

美赛数学建模 | 信息检索与竞赛工具 降低信息差

文章目录 一、搜索引擎二、学术搜索三、竞赛工具四、翻译和英文润色CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 工欲善其事,必先利其器。 一、搜索引擎 一些好用的搜索引擎与聚合搜索: 全渠道搜索(综合必应、谷歌、百度)聚合搜索(综合必应、谷歌、搜狗、360 等)开发…

10个最佳翻译平台&英语飙升的好方法

1. 译言网 www.yeeyan.com 人气最高的协作翻译平台,你可以在上面阅读翻译好的文章,有译文和原文对照便于学习,你也可以参与翻译锻炼能力。 2. 知网翻译助手 http://dict.cnki.net 这个网站的专业术语翻译功能非常强大,一般查不…

顺序主子式的英文翻译(定义)

顺序主子式的英文翻译(定义) 为了查明顺序主子式的英文翻译,我在国内知网翻译助手、金山词霸等诸多翻译系统查了一下,给出的答案不外乎以下几个答案。 (知网翻译助手的答案) 我喜欢刨根问底,很明…

十个最好的翻译学习网站

2019独角兽企业重金招聘Python工程师标准>>> 译言网 www.yeeyan.com 人气最高的协作翻译平台,你可以在上面阅读翻译好的文章,有译文和原文对照便于 学习,你也可以参与翻译锻炼能力。 2. 知网翻译助手 http://dict.cnki.net 这个网…

第一篇学术论文经验总结(草稿)

第一篇学术论文经验总结(草稿) **科研工具**查文献工具翻译润色 前提阅读文献实验写作摘要引言相关工作方法实验及结果结论 **改论文,改论文,改论文** 本文主要针对计算机领域的小白,加粗表示重要的部分。 科研工具 h…

5个文献平台分享

目前,国内的科研大多数需要大量的文献阅读,怎么找文献则成为了难题,这里分享5个文献平台,科研工作者可以用于资料搜索等等。 中国知网:知网还提供文献搜索、数字搜索、图形搜索等多种服务,学术资源十分丰富…

如何高效完成英文文献翻译

写在前面 又到一年毕设季,面对数千字的外文翻译内容,又不想花钱找淘宝,如何快速完成呢? 本文是本人在毕设外文翻译中总结的方法,仅做参考,若您有更好的方法欢迎提出! 第一步——搜标题 毕设老师…