1.shiro流程:
1.1.使用数据源,也就是RealM初始化SecurityManagerFactory.
1.2.得到SecurityManager(安全管理器).
1.3.设置到SecutiryUtils.
1.4.得到subject,使用认证服务.
2.权限管理包括用户认证和授权两个部分.
3.关键对象:
3.1.subject:主体
3.2.securityManager:安全管理器
3.3.Authenticator:认证器(身份认证,登陆)
3.4.Authorizer:授权期(判断用户是否有此权限,包括角色,权限)
3.5.realm:领域(SecurityManager通过realm获取用户权限数据)
3.6.SessionManager:会话管理,实现单点登陆
3.7.SessionDao:会话Dao,将session储存到数据库中
3.8.CacheManager:缓存管理,用户权限数据存储在缓存
3.9.Cryptography:密码管理,提供了一套加密/解密工具
4.shiro的三种授权方式:
4.1.编程式:通过写if/else授权
4.2.注解式:通过在执行的方法上放置相应的注解
4.3.JSP/GSP标签:在JSP/GSP页面通过相应的标签完成
5.shiro所做的事:
5.1.验证用户
5.2.对用户执行访问控制:用户是否拥有角色,用户是否拥有访问权限
5.3.在任何环境下使用session API
5.4.可以使用多数据源
5.5.单点登陆(sso)
5.6."Remember me"服务
6.shiro的过滤器在spring的applicationContext.xml中
认证过滤器:
anon,authcBasic,auchc,user
授权过滤器:
penms,rest,roles,port,ssl
7.粗、细粒度权限:
粗粒度管理就是对资源类型的权限管理
细粒度管理就是对数据级别的权限管理
8.散列次数相当于md5的次数,盐+散列值组成密码.
9.shiro不提供维护用户/权限的功能,而是通过Realm让开发人员自己注入.(Realm在applicationContext.xml配置)
10.shiro集成spring:
10.1在web.xml中配置shiroFilter拦截器
10.2在spring文件中配置shiroFilter,sericutyManager,realm
11.在web.xml中设置shiroFilter会拦截到css,js静态文件,所以需要在spring配置中将这些文件过滤掉,将这些文件设置成anno.
12.当调用SecurityUtils.getSubject().login(token)的时候,会调用自定义realm中的认证方法.