Shiro基础

Demo下载:前端

http://yunpan.cn/c3eNWcJini8QT  访问密码 f44d (注意:charpter2是身份验证,charpter3是受权)sql

文档下载:数据库

http://yunpan.cn/c3eN8EAvLT4z9  访问密码 d716缓存

注意:这里是用Maven作的,因此不想用Maven下载对应jar就能够了。安全

jar下载:http://yunpan.cn/c3ei5KkfmwcNI  访问密码 27d9网络

sql下载:http://yunpan.cn/c3eip45Pa38us  访问密码 9c3a多线程

一、Authentication :身份认证/登陆,验证用户是否是拥有相应的身份;
二、Authorization :受权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能作事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具备某个权限;
三、Session Manager :会话管理,即用户登陆后就是一次会话,在没有退出以前,它的全部信息都在会话中;会话能够是普通 JavaSE 环境的,也能够是如 Web 环境的;
四、Cryptography :加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
五、Web Support :Web 支持,能够很是容易的集成到 Web 环境;
六、Caching:缓存,好比用户登陆后,其用户信息、拥有的角色/权限没必要每次去查,提升效率;
七、Concurrency :shiro 支持多线程应用的并发验证,即如在一个线程中开启另外一个线程,能把权限自动传播过去;
八、Testing :提供测试支持;
九、Run As :容许一个用户伪装为另外一个用户(若是他们容许)的身份进行访问;
十、Remember Me :记住我,这个是很是常见的功能,即一次登陆后,下次再来的话不用登陆了。
注意:
记住一点,Shiro  不会去维护用户、维护权限;这 些须要咱们 本身去 设计/ 提供 ; 而后经过
相应的 接口注入给 给 Shiro
一、Subject :主体,表明了当前“用户”,这个用户不必定是一个具体的人,与当前应用交互的任何东西都是 Subject,如网络爬虫,机器人等;即一个抽象概念;全部 Subject 都绑定到 SecurityManager,与 Subject 的全部交互都会委托给 SecurityManager;能够把 Subject 认为是一个门面;SecurityManager 才是实际的执行者;
二、SecurityManager :安全管理器;即全部与安全有关的操做都会与 SecurityManager 交互;且它管理着全部 Subject;能够看出它是 Shiro 的核心,它负责与后边介绍的其余组件进行交互,若是学习过 SpringMVC,你能够把它当作 DispatcherServlet 前端控制器;
三、Realm: : 域, Shiro 从从 Realm 获取安全数据 (如用户、 角色、 权限) , 就是说 SecurityManager
要验证用户身份, 那么它须要从 Realm 获取相应的用户进行比较以肯定用户身份是否合法; 
四、SessionDAO: : DAO 你们都用过, 数据访问对象, 用于会话的 CRUD, 好比咱们想把 Session保存到数据库,那么能够实现本身的 SessionDAO,经过如 JDBC 写到数据库;好比想把Session 放到 Memcached 中,能够实现本身的 Memcached SessionDAO;另外 SessionDAO
中可使用 Cache 进行缓存,以提升性能;
 身份验证
一、principals:身份,即主体的标识属性,能够是任何东西,如用户名、邮箱等,惟一便可。一个主体能够有多个 principals, 但只有一个 Primary principals, 通常是用户名/密码/手机号。
二、credentials:证实/凭证,即只有主体知道的安全值,如密码/数字证书等。
受权
规则: “资源标识符:操做:对象实例 ID” 即对哪一个资源的哪一个实例能够进行什么操做。
其默认支持通配符权限字符串,“:”表示资源/操做/实例的分割;“,”表示操做的分割;
“*”表示任意资源/操做/实例。 
例子:
如“user:view”等价于“user:view:*”;而“organization”等价于“organization:*”或者
“organization:*:*”。能够这么理解,这种方式实现了前缀匹配。
另外如“user:*”能够匹配如“user:delete”、“user:delete”能够匹配如“user:delete:1”、
“user:*:1”能够匹配如“user:view:1”、“user”能够匹配“user:view”或“user:view:1”
等。即*能够匹配全部,不加*能够进行前缀匹配;可是如“*:view”不能匹配
“system:user:view”,须要使用“*:*:view”,即后缀匹配必须指定前缀(多个冒号就须要
多个*来匹配)

身份验证:并发

受权:性能

配置文件:学习

配置前缀意义:[]

相关文章
相关标签/搜索