shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户受权。
spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。
shiro不依赖于spring,shiro不只能够实现 web应用的权限管理,还能够实现c/s系统,分布式系统权限管理,shiro属于轻量框架,愈来愈多企业项目开始使用shiro。
使用shiro实现系统 的权限管理,有效提升开发效率,从而下降开发成本。web
认证原理:
一、经过ini配置文件建立securityManager
二、调用subject.login方法主体提交认证,提交的token
三、securityManager进行认证,securityManager最终由ModularRealmAuthenticator进行认证。
四、ModularRealmAuthenticator调用IniRealm(给realm传入token) 去ini配置文件中查询用户信息
五、IniRealm根据输入的token(UsernamePasswordToken,即这里的token是用户从页面输入的信息)从 shiro-first.ini查询用户信息(这里是测试阶段,后面都是查询的数据库,注入service,调用dao),根据帐号查询用户信息(帐号和密码) 若是查询到用户信息,就给ModularRealmAuthenticator返回用户信息(帐号和密码) 若是查询不到,就给ModularRealmAuthenticator返回null
六、ModularRealmAuthenticator接收IniRealm返回Authentication认证信息 若是返回的认证信息是null,ModularRealmAuthenticator抛出异常(org.apache.shiro.authc.UnknownAccountException)spring
若是返回的认证信息不是null(说明inirealm找到了用户),对IniRealm返回用户密码 (在ini文件中存在)和 token中的密码 进行对比,若是不一致抛出异常(org.apache.shiro.authc.IncorrectCredentialsException)数据库