53

netcore mvc快速开发系统(菜单,角色,权限[精确到按钮])开源 - 鱼东东

 4 years ago
source link: https://www.cnblogs.com/yudongdong/p/11104345.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

AntMgr https://github.com/yuzd/AntMgr

基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统

  1. 权限管理[精确到按钮])
  2. 代码生成器

代码克隆到本地 用vs2017或以上版本 打开工程。

项目结构如下:

image
image

找到DbModel下面的初始化db脚本

image

里面包含4张表的schema和初始化数据,你可以新建一个db,也可以导入到你现有的db

  1. system_users 系统用户表
  2. system_menu 系统菜单表
  3. system_role 系统角色表
  4. system_page_action 按钮权限表
image

导入db成功后在项目配置文件里面修改成正确的db链接字符串

image

F5启动应用 会进入登录页面

image

如果是按照上面初始化db脚本的话 初始化的登录名 zdyu 密码 123456

登录成功如下图:

image
image
image
image
image
image

代码自动生成

image

权限如何设计的

  • 一个菜单(system_menu)对应一个view页面【1:1】
  • 一个用户(system_user)只能有一个角色(system_role)【1:1】
  • 一个角色(system_role)可以配置多个菜单权限(view页面) 和view页面里面的功能模块(ru按钮) 【1:N】
  • 每个菜单(view页面)下的功能模块(如按钮)配置实际该功能用到的接口【1:N】

约定>配置 权限设计其实很简单

权限主要拦截器代码实现在:

image

用户登录态是记录在cookie的 默认的keyName:cbeid 可以在这个里面更改 image

约定一

具有权限拦截的Controller类上面统一打上[API("controller作用描述")] 方法上面打上 [API("方法作用描述")]

472365-20190628190520998-1288530007.png
472365-20190628190531011-853305674.png

在页面里面写需要权限控制的按钮的时候

<button type="button" action-id="role-add" action-name="新增角色" style="display: none" >新增角色</button>

标签名称含义
action-id 表示这个权限按钮的id 在当前view唯一
action-name 权限按钮的作用描述
display 默认使用 none 隐藏

有了这个标签 在配置权限的时候会解析页面自动拿到需要权限拦截的功能按钮!

只要遵守如上2个约定开发好页面和controller后,按照如下步骤进行配置权限

  1. 在菜单管理加入新增的页面
  2. 在权限管理配置功能按钮对应用到的接口
  3. 在角色管理修改对应的角色

使用本后台的前提条件

  1. 你有过开发mvc系统的经验 最起码你得知道controller view Filter 是什么东西。
  2. 有用过orm的经验,比如EF之类的。 (虽然本后台用的是AntData这个ORM框架,但是该ORM使用上采用的是原生Linq To SQL的模式和EF差不多,但是比EF轻量级)https://github.com/yuzd/AntData.ORM
  3. 有用过Autofac这款DI容器, https://github.com/autofac/Autofac Autofac.Annotation是我针对Autofc写一个开源扩展,目的是能够像java的Spring框架一样,用标签来控制注入, 摆脱写把很多注入配置代码 https://github.com/yuzd/Autofac.Annotation
  4. 有用过AutoMapper这个组件,没有的话 稍微看下官方文档就好了 https://github.com/AutoMapper/AutoMapper
  5. 前端采用的是VUE,所以你得会用vue。

使用本后台能达到什么效果

  1. 开发的页面具体完全的权限拦截功能,不需要复杂的配置按照约定的2点,就可以让开发出来的页面 完全实现某个角色 支持配置你想让它有哪些菜单,页面展示哪些按钮。
  2. 掌握基于最新的netcore技术
  3. 对于一个表的CRUD用代码自动生成功能后稍微加点业务逻辑代码,5分钟内可以开发完成

我的开发环境

  1. vs 2017 或以上版本

  2. 安装了配合ORM框架的vs一键生成dbmodel 插件:

https://marketplace.visualstudio.com/items?itemName=nainaigu.AntDataVS


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK