Git Product home page Git Product logo

antmgr's Introduction

AntMgr

基于netcore2.0 mvc 开发的 快速搭建具有如下特色的后台管理系统 最新版已升级到net6.0

特色:

  1. 用户管理
  2. 菜单管理
  3. 角色管理
  4. 权限管理[精确到按钮])
  5. 代码生成器(一键生成CRUD前后端代码 增+删+改+查【分页】导入+导出)
  6. SQL工具(智能字段提示)
  7. 约定大于配置,开发简单效率高,权限配置友好不复杂
  8. 支持mysql和sqlserver两种数据库。切换数据库不用改任何代码

角色支持遗传,比如 :共有ABCD四个功能权限,分配了 A B 2个权限给 超级管理员角色的用户,支持让超级管理员用户还能自己创建角色。但是只能选择 A B 2个。无法看到 C D!

遇到问题可有加群咨询

image

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

项目结构如下:

image image

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

  • mysql数据库的初始化脚本
  • sqlserver数据库的初始化脚本(我测试用的是2012)

image

以下教程采用的是mysql数据库,如果您是用MSSQL的话请看wiki里面有专门介绍注意点。

里面包含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 image

SQL工具(智能字段提示,写sql再也不用担心忘记字段名称了)

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("方法作用描述")]

约定二

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

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

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

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

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

其他说明

后台用到了的Orm框架:

https://github.com/yuzd/AntData.ORM

配合ORM框架的vs一键生成dbmodel 插件 wiki有插件使用教程

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

配合ORM框架的rider一键生成dbmodel 插件 wiki有插件使用教程

https://plugins.jetbrains.com/plugin/14033

WIKI有更详细的教程

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

antmgr's People

Contributors

xqueezeme avatar yuzd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

antmgr's Issues

3.1的版本新建的用户不能登录

debug过程中登录以后cookie没有写入,浏览器里没有cookie信息,userAgent是Chrome/6
除了上帝模式的用户可以登录,新增的任何用户都不能登录,userAgent用过Chrome/69,Chrome/88
调用logon接口前端有返回token,这时在浏览器cookie里没有cookie,用上帝模式的用户没有此问题

再次打擾

再次打擾,根據你的源碼,我想知道auth.js是在哪引入?
image
因為我加了一個button,想知道如何顯現?
image

DbModel新增model耦合性有点高

DbModels.cs文件中增加一个新表,增加一个实体对象后,就可以用代码生成了。生成以后做个微调,不过比较麻烦的是,但是在请求分页list时,DbContext中新表的provider是null,应该是还要在AntEntity中做修改。json配置方式生成代码看似好用,但是确增加了学习成本,总体而言,还不是那么好用。这个框架有点spring data jpa的味道。总体而言还是挺好的。

要同時使用多個數據庫連線該怎麼用?

我設定了兩條SQL連線,我要如何同時都使用?
"ConnectionItemList": [
{
"Name": "PJW_DB",
"ConnectionString": "Data Source=.;Initial Catalog=xxxxxx;User ID=sa;Password=xxxxxxx;MultipleActiveResultSets=true",
"DatabaseType": "Master"
},
{
"Name": "IntranetDB",
"ConnectionString": "Data Source=.;Initial Catalog=xxxxxx;User ID=sa;Password=xxxxxxxxx!;MultipleActiveResultSets=true",
"DatabaseType": "Master"
}
]

MS SQL 脚本初始化问题

MS Sql的初始化脚本中还有2个小问题。

1 system_role中少2个字段
RoleName和Description,用CodeGen生成成功后代码会报错。

2 插入默认数据的语句,去掉主键列,ms sql默认自增长列是不要显示添加值的,否则脚本会报错,或者关闭自增长的设置,脚本如下:
INSERT INTO dbo.system_menu ( DataChangeLastTime, IsActive, ParentTid, Name, Ico, Url, OrderRule, Level, Class) VALUES ( '2019-05-15 18:59:43.000', 1, 0, '系统管理', null, '#', 3, 1, 'glyphicon glyphicon-cog'); INSERT INTO dbo.system_menu ( DataChangeLastTime, IsActive, ParentTid, Name, Ico, Url, OrderRule, Level, Class) VALUES ( '2019-07-01 13:49:10.000', 1, 1, '菜单管理', null, '~/Home/MenuList', 1, 2, 'fa fa-reorder'); INSERT INTO dbo.system_menu ( DataChangeLastTime, IsActive, ParentTid, Name, Ico, Url, OrderRule, Level, Class) VALUES ( '2019-07-01 13:49:52.000', 1, 1, '权限配置', null, '~/Role/RoleAction', 2, 2, 'fa fa-shield'); INSERT INTO dbo.system_menu ( DataChangeLastTime, IsActive, ParentTid, Name, Ico, Url, OrderRule, Level, Class) VALUES ( '2019-07-01 13:52:58.000', 1, 1, '角色管理', null, '~/Role/RoleList', 3, 2, 'fa fa-th-large'); INSERT INTO dbo.system_menu ( DataChangeLastTime, IsActive, ParentTid, Name, Ico, Url, OrderRule, Level, Class) VALUES ( '2019-07-01 13:53:15.000', 1, 1, '系统用户', null, '~/Account/UserList', 4, 2, 'fa fa-users'); INSERT INTO dbo.system_menu ( DataChangeLastTime, IsActive, ParentTid, Name, Ico, Url, OrderRule, Level, Class) VALUES ( '2019-07-01 13:53:32.000', 1, 1, '代码生成', null, '~/Common/CodeGen', 5, 2, 'fa fa-clone'); INSERT INTO dbo.system_users( DataChangeLastTime, IsActive, Eid, UserName, Pwd, Phone, LoginIp, MenuRights, RoleTid, LastLoginTime, UserAgent, CreateRoleName, CreateUser) VALUES ('2019-05-15 18:59:49.000', 1, 'zdyu', '俞正东', 'e10adc3949ba59abbe56e057f20f883e', '1300000000', '127.0.0.1', null, 0, '2019-07-01 13:47:55.000', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', null, null);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.