shiro和redis一起使用

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值