role
阅读原文时间:2023年09月06日阅读:2

角色权限管理改造方案

#   为什么需要角色

  1. 现有的权限方案

  2. .net后台权限管理

在后台类中配置,权限 = 一级菜单:二级菜单:三级菜单;

通过在view模板中判断是否有权限显示菜单

后端通过权限配置拦截url请求。

  1. Java端权限管理

现在只有项目菜单权限管理

通过类

  1. User {

  2. }

UserCookies{

private String accessToken;

private String userId;

private String userName;

private String realName;

private boolean systemAdmin;

private List 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: '课程资源'

}

]

}

]

}

  1. 兼容改造方案

  2. .net功能模块权限控制

    java后台开放一个接口让.net调用判断是否有权限(入参为资源编码)。.net需要配置请求服务跟资源编码的关系

    需求:java端增加接口判断该用户是否有权限,.net需要配置请求服务跟资源编码的关系

  3. 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对应的菜单。

需求:开发菜单显示页面

后端访问控制:

在控制器方法中注解资源编码,这样一个资源编码就可以控制多个控制器方法。

需求:对每个需要权限控制的请求注解

  1. 页面开发对应的java后端服务改造

需求:根据页面的具体请求开发相应的接口

  1. 前端页面开发

  2. 项目用户权限管理

    参考已有的.net后台页面,不保存用户信息中的账户信息跟备注信息。

  3. 项目角色权限管理

    参考已有的.net后台页面

  4. 系统用户权限管理

    参考已有的.net后台页面,在现有角色权限模型中增加真实姓名字段

  5. 系统角色权限管理

    参考已有的.net后台页面

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章