1.什么是shiro?
shiro是一个基于java的开源的安全框架。可以完成认证、授权、会话管理、加密、缓存等功能。
2.为什么去学习shrio
在java的世界中,有更早的安全框架。有spring security和shiro。Spring Security要依赖与Spring,并且比较复杂,学习成本比较高。shiro比较简单,而且标记独立,既可以在java se中使用,也可以在java ee中使用。并且在分布式集群环境下使用。
3.shiro的结构体系
(1) Authentication: 认证
验证登录用户是否合法,也就是登录。
(2)Authorization:授权
登录以后才会授权,授予谁具有访问某些资源的权限。
(3) Session Management:会话管理
登录之后会产生一次session. sessionManagment就是管理用户特定的回话。
(4)Cryptography:加密
通过使用加密算法保持数据安全同事易于使用。提供了常见的加密算法,使得数据在应用中可以很方便的实现数据安全,并且很方便。
(5)Web Support:web应用支持
shiro可以很方便的集成到web应用程序中
(6)Caching:缓存
shiro提供了对缓存的支持。支持多种缓存架构,如:ehcache、缓存数据库-Redis。
(7)Concurrency:并发支持
支持多线程并发访问
(8)Testing:测试
(9)Run As:
支持一个用户在允许的情况下使用另一个身份登录
(10)Remember Me:记住我
4.shiro的架构体系

- subject:当前与软件进行交互的实体(用户、第三方服务、cron job 等等)的安全特定试图。subject用户获取主体信息,即身份和凭证。
- SecurityManager:如上所述,SecurityManager是shiro框架的心脏。协调其管理的
组件以确保他们能够一起顺利工作。他还管理每个应用程序用户的shiro的试图,一次他知道如何执行每个用户的安全操作。 - Authenticator:
认证器组件。负责验证用户的身份 - Authorizer:
授权器组件。负责为合法的用户指定其权限,控制用户可以访问哪些资源。 - Realm :域。用户通过shrio来完成相关的工作。shiro是不会维护数据信息的,在shiro的工作过程中,数据的查询或获取工作是通过Realm从不同的数据源来获取。Realm可以获取数据库信息,文本信息等。在shiro中可以有一个Realm也可以有多个。