上一篇答题梳理了jfinal整合shiro的流程,jfinal读取shiro注解,这一篇将做为补充。ui
1.JFinalShiroPlugin做者为shiro的RequiresRoles,RequiresPermissions, RequiresAuthentication,RequiresUser,RequiresGuest注解分别都写了一个访问控制处理器,如AuthenticatedAuthzHandler,GuestAuthzHandler,PermissionAuthzHandler,PermissionAuthzHandler,RoleAuthzHandler,UserAuthzHandler,这些类都继承了AbstractAuthzHandler,并实现了AuthzHandler接口。CompositeAuthzHandler能够是以上类的组合。这些类的做用就是处理控制器和方法上的注解,经过Subject subject = getSubject();获取当前登陆用户拥有的权限,与注解进行对比,若是注解的权限包含在拥有的权限,则能够访问该控制器或方法。插件
2.这些访问控制处理器都在启动JFinalShiroPlugin插件的时候生成了实例和与之对应的actionKey.放在类型为ConcurrentMap的authzMaps变量中。经过调用 ShiroKit.init(authzMaps)方法使得这个变量成为系统全局变量。这里代码可参考上一篇ShiroPlugin插件最主要的start方法。继承
3.如今有了访问控制处理器实例及其对应的actionkey,能够经过拦截器拦截没有权限的用户操做控制器接口