1.首先调用Subject.isPermission*/hasRole*接口,其余委托给SecurityManager,而SecurityManager接着会委托给Authorizer。
2.Authorizer是真正的授权者,如果我们调用如isPermitted(“user:view”),其首先会通过PermissionResover把字符串转换成相应的permission实例。
3.在进行授权之前,其会调用相应的real获取subject相应的角色、权限用于匹配传入的角色、权限;
4.Authorization会判断Realm的角色/权限是否和传入的匹配,如果有多个realm。会委托给ModularRealmAuthorzer进行循环判断,如果匹配如isPermitted*、hasRole*会返回true,否则返回false表示授权失败。