上一篇答題梳理了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,能夠經過攔截器攔截沒有權限的用戶操做控制器接口