shiro登录认证和权限控制
一、实现类继承AuthorizingRealm
1、实现方法doGetAuthenticationInfo,将定义的用户实体类填充map,realmPrincipals;
2、实现方法doGetAuthorizationInfo,填充roles ,Permissions;
二,创建subject
提供SecurityUtils getSubject 方式创建,securityManager.createSubject,SubjectContext中进行确认map中已经存在securityManager,session以及PrincipalCollection,最后DefaultWebSubjectFactory创建webDelegatingSubject,并保存到session中。
三、登录验证
登录创建,DelegatingSubject login方法执行securityManager login,创建同第二步。
四、登出
DelegatingSubject logout方法执行securityManager logout,删除session中的subject,stop session。
五、关于ModularRealmAuthenticator
ModularRealmAuthenticator类在项目启动时setRealms(第一步中定义,不清楚为什么项目启动时注入),doSingleRealmAuthentication方法调用realm的doGetAuthorizationInfo