发表于: 2017-06-24 22:06:26
1 1018
今天完成的事情:
1、今天学习了 shiro 的自定义权限管理。
shiro有针对字符串判断的方式来管理权限,然而对字符串的判断过于耗费性能。
先把shiro的三大核心再复习一遍:
这里我参考了以下这篇教程
http://blog.csdn.net/u012702547/article/details/63268910
Subject:
在shiro框架中,任意一个和程序交互的主体都是一个subject,其包括了但不限于用户,所有的subject都会绑定到 securityManager 上,故而所有交由 subject 处理的操作最终都会委托给securityManager。
SecurityManager
从字面上理解为是一个安全管理器的意思,所有的subject都由securityManager管理。它是shiro的核心,有点类似于 spring 框架中的 dispatcherServlet。
Realm
Shiro 在运行的过程中,从realm中获取安全数据,比如用户的权限,角色等。每当securityManager 要验证用户身份的时候,它就会从realm中获取相应的数据进行比对,这个有点类似于DAO,由它提供数据源。
梳理一下shiro应用的流程:
代码通过subject来进行认证和授权等操作,而subject又将此操作委托给securityManager。
程序员将要验证的数据源注入到realm中,securityManager在realm中查询数据进行验证。
以上是三个基本概念,需要做权限管理的话,还需要了解几个概念:
Authorizer,其在shiro中扮演的职责是授权,即访问控制,authorizer给程序员提供了进行角色、权限判断时需要的接口等。securityManager 继承了authorizer。
PermissionResolver 用于解析权限字符串到permission实例。
RolePermissionResolver 则用于根据角色解析相应的权限集合。
在linux中,1,2,4三个数字分别表示一个文件的可读可写执行权限,若想要文件获取多个权限,只要将相应的数字相加就可以。
明天计划的事情:
遇到的问题:
收获:
评论