一、 模块基本功能
1. 角色具有不同的权限,用户对应于某种角色后,就具有该角色的权限。如果没有相应的权限,就不能做相应的操作。
2. 理想的设计,页面上每一个文字,按纽等的元素,都可以通过指定用户角色,是否允许用户可见,可编辑等。
3. 为方便权限的的细分,将不同的权限放于不同的权限分类中。
4. 每个角色可以没有,或有多个权限。
5. 用户只能对应某一个角色,属于某个角色后,用户就拥有了该角色的所有权限。
6. 不同的学校,可以自定义不同的角色,所以角色也要对应某一个学校。可以给自定义的角色指定不同的权限。
二、 数据库表结构

三、 表结构说明
PrivilegeCategory 权限分类PrivilegeCatId 主键 AUTO_INCREMENT
CatName_CN 栏目名称
CatName_EN
CatName_TW
ParentCat 父栏目id Related table PrivilegeCategory
Privilege 权限细分表
PrivilegeId 主键 AUTO_INCREMENT
PrivilegeSysId 系统索引名
PrivilegeName_CN 权限名称
PrivilegeName _EN
PrivilegeName _TW
PrivilegeCatId 所属的栏目 Related table PrivilegeCategory
Remarks 说明
Role 角色表
RoleId 主键 AUTO_INCREMENT
RoleName_CN 角色名称
RoleName_EN
RoleName_TW
Remarks 说明
SchoolId 学校id Related table School
MarkDelete
Role_Privilege 角色权限表,角色拥有的权限
RoleId 角色 Related table
Role
PrivilegeId 权限 Related tablePrivilege
四、 表结构说明
1. PrivilegeCategory表,ParentCat字段说明这个表是一个无限延伸的目录树。
2. Privielege表, PrivilegeSysId 是系统所有的标识索引,这个必须是自定义的字符串,注意命名规则,以方便日后维护.
3. Role表,角色表,可以与某间学校对应,表明该角色是属于某间学校的。
4. Role_Privilege表,角色拥有的权限表, 多对多关系。双主键。
五、 新增一个权限, 并将权限赋予一个角色的操作例子
1. sql :
insert into PrivilegeCategory (PrivilegeCatId, CatName_CN, CatName_EN, CatName_TW, ParentCat) values (1, '行政及教学平台', 'EVI SCHOOL', '行政及教學平臺', NULL);
// 这个权限分类根目录,不显示在页面的
insert into Privilege (PrivilegeSysId, PrivilegeName_CN, PrivilegeName_EN, PrivilegeName_TW, PrivilegeCatId) values ('1system_login', '登录系统', 'System login', '登錄系統', 1);
// 在根目录中添加一个登录的权限,
2. 用超级用户登录, 将登录权限赋予 广大->“测试” 这个角色

3. java代码,判断用户是否有登录权限
import com.evi.modules.utils.UserPrivilegeUtil;
BaseVO vo = getUser( username, password );
if( UserPrivilegeUtil.hasPrivilege(vo, "1system_login") ) {
// 如果有权限
}
4. 同理,可能动态给系统添加不同的权限。




















