OA权限管理分为: 
人员管理 
角色管理 
模块管理 
其实有这样一些概念: 
主体:用户和角色可以称为主体。 
资源:就是可以进行crud的对象。 
权限:就是对资源的crud操作。 
授权:就是对这种权限的分配。 
认证:就是查询用户是否有权限。 
用户和角色的关系是多对多,这共同组成了主体。 
模块是资源。 
主体和资源的纽带是ACL(访问控制列表),主体和ACL之间是多对多关系,资源和ACL之间也是多对多关系。ACL里面就记录了用户的权限。 
在数据库上它就是一个中间表的作用。 
授权是这样的: 
    授权分为两种: 
    角色授权 
        对角色统一授权,继承这种角色的用户就自动拥有该角色所拥有的权限,并且权限分有优先级,这样两种权限如果之间发生冲突则取高优级。 
    用户授权 
        对用户进行单独授权,这种情况必须在不继承角色的情况下才能生效,并且此时只使用单独授权的权限。 
每一次授权都是针对特定模块,而不是所有。 
搜索用户所有授权过程是这样的: 
1、查询用户所有角色的权限,按优先给从低到高,有重复的可以以高优先级覆盖。(存入Map中,key是资源标识) 
2、查询用户直接授予的权限。查询不继承的权限。 
3、合并权限。 
4、再从中选择具体的权限(crud)。 
认证过程是这样的: 
    根据用户标识和资源标识查找ACL实例 
    有实例: 
        查看是否有确定授权 
            确定:返回授权 
            不确定(继承):查询用户拥有角色列表,根据角色标识和资源标识查找ACL实例(循环) 
    没有实例: 
        查询用户拥有角色列表,根据角色标识和资源标识查找ACL实例(循环)
                                    
                                    
                                        
                                            1