netcore mvc快速開發系統(菜單,角色,權限[精確到按鈕])開源
AntMgr https://github.com/yuzd/AntMgr
基於netcore2.0 mvc 開發的 快速搭建具有如下特色的后台管理系統
特色:
- 用戶管理
- 菜單管理
- 角色管理
- 權限管理[精確到按鈕])
- 代碼生成器
如何使用
代碼克隆到本地 用vs2017或以上版本 打開工程。
項目結構如下:
找到DbModel下面的初始化db腳本
里面包含4張表的schema和初始化數據,你可以新建一個db,也可以導入到你現有的db
- system_users 系統用戶表
- system_menu 系統菜單表
- system_role 系統角色表
- system_page_action 按鈕權限表
導入db成功后在項目配置文件里面修改成正確的db鏈接字符串
F5啟動應用 會進入登錄頁面
如果是按照上面初始化db腳本的話 初始化的登錄名 zdyu 密碼 123456
登錄成功如下圖:
首頁
菜單管理
權限管理
角色管理
系統用戶
代碼自動生成
權限如何設計的
- 一個菜單(system_menu)對應一個view頁面【1:1】
- 一個用戶(system_user)只能有一個角色(system_role)【1:1】
- 一個角色(system_role)可以配置多個菜單權限(view頁面) 和view頁面里面的功能模塊(ru按鈕) 【1:N】
- 每個菜單(view頁面)下的功能模塊(如按鈕)配置實際該功能用到的接口【1:N】
約定>配置 權限設計其實很簡單
權限主要攔截器代碼實現在:
用戶登錄態是記錄在cookie的 默認的keyName:cbeid 可以在這個里面更改
約定一
具有權限攔截的Controller類上面統一打上[API("controller作用描述")] 方法上面打上 [API("方法作用描述")]
約定二
在頁面里面寫需要權限控制的按鈕的時候
<button type="button" action-id="role-add" action-name="新增角色" style="display: none" >新增角色</button>
標簽名稱 | 含義 |
---|---|
action-id | 表示這個權限按鈕的id 在當前view唯一 |
action-name | 權限按鈕的作用描述 |
display | 默認使用 none 隱藏 |
有了這個標簽 在配置權限的時候會解析頁面自動拿到需要權限攔截的功能按鈕!
只要遵守如上2個約定開發好頁面和controller后,按照如下步驟進行配置權限
- 在菜單管理加入新增的頁面
- 在權限管理配置功能按鈕對應用到的接口
- 在角色管理修改對應的角色
使用本后台的前提條件
- 你有過開發mvc系統的經驗 最起碼你得知道controller view Filter 是什么東西。
- 有用過orm的經驗,比如EF之類的。 (雖然本后台用的是AntData這個ORM框架,但是該ORM使用上采用的是原生Linq To SQL的模式和EF差不多,但是比EF輕量級)https://github.com/yuzd/AntData.ORM
- 有用過Autofac這款DI容器, https://github.com/autofac/Autofac Autofac.Annotation是我針對Autofc寫一個開源擴展,目的是能夠像java的Spring框架一樣,用標簽來控制注入, 擺脫寫把很多注入配置代碼 https://github.com/yuzd/Autofac.Annotation
- 有用過AutoMapper這個組件,沒有的話 稍微看下官方文檔就好了 https://github.com/AutoMapper/AutoMapper
- 前端采用的是VUE,所以你得會用vue。
使用本后台能達到什么效果
- 開發的頁面具體完全的權限攔截功能,不需要復雜的配置按照約定的2點,就可以讓開發出來的頁面 完全實現某個角色 支持配置你想讓它有哪些菜單,頁面展示哪些按鈕。
- 掌握基於最新的netcore技術
- 對於一個表的CRUD用代碼自動生成功能后稍微加點業務邏輯代碼,5分鍾內可以開發完成
我的開發環境
-
vs 2017 或以上版本
-
安裝了配合ORM框架的vs一鍵生成dbmodel 插件:
https://marketplace.visualstudio.com/items?itemName=nainaigu.AntDataVS