角色权限管理改造方案
- 现有的权限方案
- .net后台权限管理
在后台类中配置,权限 = 一级菜单:二级菜单:三级菜单;
?
通过在view模板中判断是否有权限显示菜单
?
后端通过权限配置拦截url请求。
?
- Java端权限管理
现在只有项目菜单权限管理
?
通过类
?
- User {
- }
?
?
UserCookies{
private String accessToken;
private String userId;
private String userName;
private String realName;
private boolean systemAdmin;
private List<ProjectId> projectAuth;
}
?
通过projectAuth判断该用户有多少个项目。
?
通过systemAdmin判断是否有菜单权限,每个项目的菜单权限都是一样的
?
Js中配置如下,isAdmin为true时显示菜单
{
defaultValue: [‘课程资源‘, ‘课程列表‘],
title: ‘课程资源‘,
show: true,
link: ‘‘,
icon: ‘icon-course‘,
target:false,
items: [
//课程资源->课程资源
{
title: ‘课程资源‘,
items: [
{
title: ‘课程列表‘,
isAdmin: true,
link: ‘/admin/course/courselist?project_id=‘ + projectId,
icon: null,
parent_title: ‘课程资源‘
},
{
title: ‘课程标签‘,
isAdmin: true,
link: ‘/admin/course/courseslabel?project_id=‘ + projectId,
icon: null,
parent_title: ‘课程资源‘
}
]
}
]
}
?
- 兼容改造方案
- .net功能模块权限控制
java后台开放一个接口让.net调用判断是否有权限(入参为资源编码)。.net需要配置请求服务跟资源编码的关系
?
需求:java端增加接口判断该用户是否有权限,.net需要配置请求服务跟资源编码的关系
?
- Java功能模块权限控制
资源信息存储:
建枚举类配置资源编码跟资源名称,
?
例如:
?
COURSE("课程资源", "course"),
COURSE_LIST("课程列表", "course:list"),
COURSE_TAG("课程标签", "course:tag"),
?
course为课程资源一级菜单,course:list为课程资源下二级菜单。
权限分配时,数据库保存course:list跟角色的对应关系.
?
需求:权限模块梳理配置到类里面
?
菜单显示控制:
在view模板中写判断逻辑来控制菜单显示
?
例如该用户角色权限列表下有course:list,course:tag,
?
在view模板中写死,当权限列表中有course:list,就显示course:list对应的菜单。
需求:开发菜单显示页面
?
后端访问控制:
在控制器方法中注解资源编码,这样一个资源编码就可以控制多个控制器方法。
需求:对每个需要权限控制的请求注解
?
- 页面开发对应的java后端服务改造
?
需求:根据页面的具体请求开发相应的接口
?
?
- 前端页面开发
- 项目用户权限管理
?
参考已有的.net后台页面,不保存用户信息中的账户信息跟备注信息。
?
- 项目角色权限管理
?
参考已有的.net后台页面
?
- 系统用户权限管理
参考已有的.net后台页面,在现有角色权限模型中增加真实姓名字段
?
- 系统角色权限管理
?
参考已有的.net后台页面
?