素材巴巴 > 程序开发 >

shiro和redis一起使用

程序开发 2023-09-14 14:05:51

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


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。