发表于: 2018-03-24 12:01:11

1 633


shiro学习总结(二)

今天完成的事情:接着昨天的内容讲一讲缓存

往安全管理器中注入用户缓存管理器(主要是为了存放权限等内容),这个部件需要自己去重写、实现,装配:

java代码:

要求实现CacheManager,并通过get/set提供给安全管理器正确的缓存存储读取功能。

然后再把具体的CacheManager注入进去:

java代码:

然后将redis的配置和具体实现给装配进去:

这里要注意,没有密码的话千万不要填password,不然会报错!


这样子就没有问题了,访问限权资源的时候,发现控制台上面只会出现一次授权管理器授权输出的内容了,这样子大大减少了数据库的负担(授权管理器的数据是从数据库里面提取出来的,要各种联表查询,很耗费资源)


当然shiro的框架功能远不止这些,我们甚至可以把整个session持久化到缓存,配合CAS完成SSO,实现集群访问的功能:

下面简单写一下配置链,具体的我在小课堂里面讲:

其实写了这么多,其实就是一层层配置了操作session的具体方法和注入方式,检测实行机制,这里需要我们自己写一个序列化的工具类:


然后,最终的实现还是靠相同的方法来实现的,也就是id为jedisManager的那个bean。


最后测试输入localhost:8080/a/u/user后自动跳转到登录页面,然后发现原生的servlet的SessionCookie被废弃了,换成了我们shiro自己配置的cookie模板:

然后重启服务器(浏览器不能关),发现之前的限权页面一样可以访问(因为我们拿着Shiro的Cookie没有发生改变),这也从侧面证明了实现了集群访问

然后关闭浏览器,重新登录,发现这个cookie的内容马上发生了改变,需要重新登录了,非常的安全

哪怕黑客拿到了我们的cookie,其实也没有用,因为shiro有自己的检测session过期的机制,这种方案还不用绑ip,优化用户体验(其实shiro也可以绑,不过需要额外配置)。


最后总结下配置完成后的效果:

1.非常的自动化,配置完成后,密码的比对,权限的读取检验,登录时间的控制,缓存的读取全部委托给了shiro框架,避免了很多冗长的业务逻辑判断。

2.非常的安全

3.可扩展性非常的强,可以增加很多很多功能

4.实现了单点登录,非常符合现在的分布式服务器架构


其他:

关于安全,我们甚至还可以额外配置,手动去操控session,做到实时修改权限,在线并发人数控制等等功能;关于便利,优化用户体验,我们也可以配置额外的rememberMe,让用户在长时间内(比如30天)内完成有限权限的操作....不得不说这个安全框架非常NB,值得一学!


明天计划的事情: 继续拆解复盘


遇到的问题:null


收获:总结,收获


返回列表 返回列表
评论

    分享到