一.Shiro的简介 Shiro是一个开源的java安全控制框架,它为我们提供了认证(Authentication),授权(Authorization),会话管理(Session Management) 和加密(Cryptography)的功能,不论 对什么程序Shiro都可以提供安全管理服务。Shiro的另一个 优点就是相对于其他 的安全框架来说更简单,例如:JSecurity、Spring Security、Acegi Security等。
二.Shiro的主要API
Shiro中的API主要有:Subject ,SecurityManager 和 realm。
① Subject:是主体,代表了当前的"用户",这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject, 如网络爬虫,机器人等;是一个 抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会 委托给SecurityManager;可以把Subject认为是一个调用 SecurityManager方法的对象。
② SecurityManager:是安全管理器,就是说所有与安全相关的操作都会与SecurityManager有关,而且它管理者所有的 Subject,SecurityManager是 Shiro的重要核心,也可以把它看成是springMVC 中的前端控制器。
③ Realm:是Shiro中获取安全数据的域,如果SecurityManager想要验证用户身份那么就需要先从realm中先获取相应的用 户进行比较来确定身份知否拥有 权限,也可以吧realm看成是一种数据库。
三.Shiro的登录流程:
Shiro的登录流程: 应用程序 -- Subject -- SecurityManager -- Realm -- 安全数据
四.Shiro实现权限的四种方式
1.通过Subject硬编码进行权限控制(在实际开发中不常用)。
2.基于UR级别的粗粒度权限控制:在web层中。
3.基于方法级别的细粒度权限控制:在Service层的方法上,基于注解开发,使用的是Cjlib动态代理。
4.Shiro标签库:直接在页面中不显示用户没有权限的功能,基于jsp页面。
五.Shiro的过滤器
anon未认证可以访问 authc认证后可以访问 user 需要特定用户才能访问
perms需要特定权限才能访问 roles 需要特定角色才能访问
port 需要特定端口才能访问 reset 根据指定 HTTP 请求访问才能访问
六.结语
[size=17.39130401611328px]Shiro是Apache Incubator 内的一个框架,可让您向应用程序中添加身份验证和授权。它支持不同的身份验证存储方式, 比如 LDAP,Kerberos 和 AD DS。Shiro 最小限度的依赖性再加上它相对简单的配置让它成为了应用程序内安全性框架的 一个很好的选择。
|
|