用了shiro好多年了,今天这里做个详细的讲解,如有错误欢迎大家纠正
shiro简介
Apache Shiro是java的一个安全(权限)框架。
Shiro可以用在JavaSE和JavaEE环境。
Shiro可以进行认证、授权、加密、会话管理、集成web、缓存等等。
下载地址:http://shiro.apache.org/
功能简介
Authentication:身份认证/登录,验证用户是否拥有相应的身份
Authorization:授权,验证某个已认证的用户是否拥有某个权限,判断用户是否能进行什么操作
Session Manager:会话管理,用户登录后就是一次会话,在没有退出之前,所有信息都会存在会话中,可以是普通的javaSE环境,也可以是web环境
Cryptography:加密,保证数据的安全性,例如用户密码是加密方式存储到数据库
Web Support:web支持
Caching:缓存,可以存储用户登陆信息,提高效率
Concurrency:Shiro支持多线程应用的并发验证
Testing:提供测试支持
Run As:允许一个用户假装为另一个用户的身份进行访问(允许的条件下)
Remember me:记住我,你懂的
shiro架构
Subject:应用代码直接交互的对象,shiro的对外Api核心就是subject。Subject代表当前的任何交互的东西,与subject所有交互都会委托给SecurityManager(相当于正式的执行者)
SecurityManager:安全管理器,所有安全有关的操作都会与SecurityManager交互,并且管理这所有的subject,负责与Shiro的其他组件进行交互,相当于springmvc中的dispatcherServlet的角色
Realm:Shiro从Realm获取安全数据(如,用户,角色,权限),意思就是SecurityManager要验证用户身份,需要从Realm中获取相应的用户进行比较确认身份是否合法