Giter Club home page Giter Club logo

lampo1024 / dnczeus Goto Github PK

View Code? Open in Web Editor NEW
1.5K 68.0 434.0 6.28 MB

DncZeus 是一个基于.NET 7 + Vue.js(iview-admin) 的前后端分离的通用后台权限(页面访问、操作按钮控制)管理系统框架。后端使用.NET 7 + EF Core构建,UI则是目前流行的基于Vue.js的iView(iview-admin)。项目实现了前后端的动态权限管理和控制以及基于JWT的用户令牌认证机制,让前后端的交互更流畅。码云镜像:https://gitee.com/rector/DncZeus 。演示地址(demo):

Home Page: https://dnczeus.codedefault.com

License: MIT License

C# 44.70% JavaScript 14.55% HTML 0.12% Vue 37.92% CSS 0.67% Less 2.04%
net-core net-core-webapi netcore iview iview-admin jwt jwt-authentication jwt-bearer-tokens dnczeus csharp

dnczeus's Introduction

DncZeus用户授权数据流图

DncZeus

前言

关于 DncZeus

DncZeus = Dnc + Zeus

"Dnc"--.Net Core 的缩写;

"Zeus"--中文译为宙斯,是古希腊神话中的众神之王,奥林匹斯十二主神之首,**宇宙万物的至高无上的主神(在古希腊神话中主神专指宙斯),人们常用“众神和人类的父亲”、“神王”来称呼他,是希腊神话诸神中最伟大的神。

DncZeus的愿景就是做一个.NET Core领域小白也能上手的简易、通用的后台权限管理模板系统基础框架"。

项目简介

DncZeus是一个基于 .NET 7 + Vue.js 的前后端分离的通用后台管理系统框架。后端使用.NET 7 + Entity Framework Core 构建,UI 则是目前流行的基于 Vue.js 的 iView。项目实现了前后端的动态权限管理和控制以及基于 JWT 的用户令牌认证机制,让前后端的交互更流畅。

注意: DncZeus并不是一个完整的业务系统,但她提供完成业务系统的绝大多数开发场景,让每一位.NET 开发者都能基于DncZeus快速开发出交互、体验以及功能具佳的.NET 7 单页应用程序(SPA)。

支持DncZeus(求Star :))

如果你觉得DncZeus对你或者他人有用,请为DncZeus点个赞,求扩散,让更多人获得帮助!!!

文档(Document)

在线体验(Demo)

超级管理员:administrator 管理员:admin

密码:111111

地址:https://dnczeus.codedefault.com

试试以不同用户名登录系统,可以体验不同角色的不同菜单权限。

由于是个人项目,资金有限,体验服是低配,请大家爱惜,轻戳,不胜感激!!!

国内码云镜像地址:https://gitee.com/rector/DncZeus

适合人群

由于 DncZeus 考虑到初级.NET 开发者都可以使用,所以后端项目未涉及过多架构和封装(代码逻辑一目了然),但为了你更好地熟悉和运用 DncZeus,你需要了解:

  • .NET 7
  • Vue.js
  • iView

ASP.NET Core 的知识能确保你可以看懂和了解后端是如何实现和工作的,而 Vue.js 框架则是前端实现的基石,当然 iView 这个基于 Vue.js 的 UI 框架也是必须要了解的,因为 DncZeus 正是基于 iview-admin(iView 的一个后台管理系统示例项目)来实现的前端 UI 交互。

如果你对这两个方面的知识还不熟悉,建议你可以先学习一些理论再来运用 DncZeus 这个框架。关于 .NET 7 和 Vue.js 的入门请参考:

环境和工具

  1. Node.js(同时安装 npm 前端包管理工具)
  2. Visual Studio 2022
  3. VS Code 或者其他前端开发工具
  4. git 管理工具
  5. MySQL,PostgreSQL或SQL Server(SQL Server 2012+)

技术实现

  • .NET 7
  • ASP.NET Core WebApi
  • JWT 令牌认证
  • AutoMapper
  • Entity Framework Core 7
  • .NET 7 依赖注入
  • Swagger UI
  • Vue.js(ES6 语法)
  • iView(基于 Vue.js 的 UI 框架)

下载项目

使用Git工具下载

首先请确保你本地开发环境已安装了git管理工具,然后在需要存放本项目的目录打开git命令行工具Git Bash Here,在命令行中输入如下命令:

git clone https://github.com/lampo1024/DncZeus.git

以上命令就把DncZeus的远程代码拉取到你的本地开发机上。

手动下载

如果你不愿意使用git管理工具下载DncZeus的远程代码,你也可以在github托管地址手动下载,打开地址https://github.com/lampo1024/DncZeus,找到页面中的按钮"Clone or download",如下图示:

手动下载DncZeus

在弹出的对话框中点击按钮"Download ZIP"即可开始下载DncZeus的源代码,如下图:

手动下载DncZeus源代码

安装依赖

前端项目

在将DncZeus的源代码下载到本地之后,如果你使用的git管理工具,可以不用退出当前的git管理工具,输入如下命令:

cd DncZeus/DncZeus.App

进入到DncZeus的前端项目目录DncZeus.App。在命令行中输入如下命令进行前端依赖包的还原操作:

npm install

或者

npm i

后端项目

在Visual Studio中打开解决方案[DncZeus.sln]。首先根据自己的开发环境(SQL Server数据库类型,本示例默认是SQL Server Localdb)修改配置文件appsettings.json中的数据库连接字符串,示例默认连接字符串为:

"ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=DncZeus;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

打开项目根目录中的脚本文件夹[Scripts],执行你的数据库类型对应的脚本文件以初始化系统数据。

v2.1.0开始,DncZeus同时支持MySQL,PostgreSQL,MSSQL三种类型数据库啦!!!你可以根据需要选择适合自己的数据库哟

恭喜你,到这里所有的准备工作就完成了。

赶紧体验DncZeus框架吧!!!

运行

  1. 使用Visual Studio开发工具打开DncZeus根目录中的VS解决方案文件[DncZeus.sln](或者你喜欢的话,使用VS Code来进行.NET 7的开发也是可以的),设置DncZeus.Api项目为默认启动项并运行此项目。

这时在浏览器中打开地址:http://localhost:54321/swagger ,便可以查看到DncZeus已经实现的后端API接口服务了。

  1. 在命令行中进入到DncZeus的前端项目目录[DncZeus.App],运行如下命令以启动前端项目服务:
npm run dev

成功运行后会自动在浏览器中打开地址: http://localhost:9000

使用和授权

DncZeus项目是一个开源项目,你可以直接基于本项目进行扩展或者二次开发,也可以修改其中的代码。

但请保留原文件中的版权信息,尊重本人的劳动成果,违者必究,谢谢合作

捐赠作者(Rector)

如果你觉得DncZeus是你喜欢的类型,或者能帮你找到一些开发的灵感,请捐赠我(Rector)以维护DncZeus的体验服务器,谢谢支持!!!

支付宝支付 微信支付

感谢热心,友爱的捐赠者

名称 金额(元) 方式
****) 20.00 微信
****宇 8.00 微信
****宇 50.00 微信
****佑 6.00 微信
****沫 20.00 微信
****离 8.00 微信
****害 50.00 微信
****头 10.00 微信
****) 5.00 微信
****龙 21.00 微信
北京:Net:柠檬 5.00 微信

问题与反馈

遇到问题怎么办?

  • 直接提交issue
  • QQ群:483350228
  • 码友网

版本变更日志

v2.1.1(2023-02-28)

  • 新增PostgreSQL数据库支持

v2.1.0(2023-02-24)

  • .NET SDK升级到.NET 7
  • 同时支持MySQL,PostgreSQL,MS SQL Server数据库(请修改appsettings.json的配置项DataProvider,可选值:MYSQL,MSSQL)
  • 将SQL脚本全部使用Linq语法重构

v2.0.0

  • 支持动态路由和动态菜单渲染
  • 优化登录逻辑
  • 添加退出系统确认,优化退出逻辑
  • 优化路由导航守护
  • 优化页面刷新的数据加载逻辑

v1.0.0

  • 支持基本的用户&权限管理
  • 前端静态路由

dnczeus's People

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  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

dnczeus's Issues

是否支持用户分组、角色分组、权限分组?

楼主您好,看过您的项目,感觉写的非常好,对我帮助非常大,在学习RBAC的时候,使我更加能理解这种基于用户权限控制的设计**,如果要是能够再支持用户分组、角色分组、权限分组那就太好了。

更新3.1 api 之后编辑用户,出现这个错误。

更新3.1 api 之后编辑用户,出现这个错误:

usercontroller
public IActionResult Edit(Guid guid)
位置:response.SetData(_mapper.Map<DncUser, UserEditViewModel>(entity));

错误提示:AutoMapper.AutoMapperMappingException:“Missing type map configuration or unsupported mapping.”

图标管理打开后报错

当打开图标管理报:
网络出错,请检查你的网络或者服务是否可用
请求地址:[http://localhost:54321/api/v1/rbac/icon/list]

点击用户管理、角色管理页面无法打开

图片
您好,我点击用户管理等功能时,控制台提示vue-router.esm.js?8c4f:1905 Error: Cannot find module './viewMain'
at eval (eval at ./src lazy recursive ^./view.*$ (app.js:3777), :327:12)
页面不能跳转。

建议登录后显示用户名

RT.

现版本用户登录后,没有一个明显的用户识别,很难看出来登录的是哪个用户,建议在如下位置加个用户名啥的,以便查看.

default

前端工程删除掉node_modules,之后重新npm install,然后所有页面的保存按钮都失效了

调试了下发现是
validateXXXForm()方法里的代码始终返回false,
比如:

validateUserForm() {
      debugger
      let _valid = false;
      console.log("this.$refs[formName]:"+this.$refs["formUser"]);
      this.$refs["formUser"].validate(valid => {
        if (!valid) {
          this.$Message.error(“请完善表单信息”);
        } else {
          _valid = true;      
        }
      });
      return _valid;
    },

奇怪的是未完善表单时可以正确的提醒“请完善表单信息”,但是表单完整时始终进不了else子句:

else {
          _valid = true;      
        }

这样导致始终返回false

这咋改,感觉是官方的包做了修改。

Release 模式时访问 swagger 报错

RT.

指定编译模式为 Release 后,访问 /swagger 会出现如下错误信息:

{
  "statusCode": 500,
  "message": "资源服务器忙,请稍候再试,原因:Could not find file '...yourpath\\DncZeus\\DncZeus.Api\\bin\\Release\\netcoreapp2.1\\DncZeus.Api.xml'."
}

路由跳转报错

前端在跳转时一直报
Error: Cannot find module './viewMain'
at eval (eval at ./src lazy recursive ^./view.*$ (app.js:3777), :327:12)

baseUrl配置不科学

RT.

// 现有配置为
baseUrl: {
    dev: 'http://localhost:54321/api/v1/',
    pro: 'http://localhost:54321/api/v1/'
  }

这里的 /api/v1 不具备共性,不应该放到 baseUrl 里,

举些栗子:

  • 新增的 api 不以 api/v1 为前缀的怎么办?另写一个 axios 的封装,明显不合理
  • 有些接口发布后是api直接用二级域名 http://api.some.com,这个时候 baseUrl=http://api.some.com/api/v1,看着就不有爱...
  • ...
  • 总而言之.../api/v1不应该放到 baseUrl

iview-admin 本身给的例子也是真正具备共性的 baseUrl

Warning CS1591

RT.

使用 Visual Studio 2017 时,会出现很多 warning CS1591,强迫症患者表示很不开心.

default

发现一个排序的BUG

查询参数:stores.user.query.sort当中,用的是变量名是:direct,但column on change当中,是赋值变量:direction;这个是bug吧?另外,sort的数据类型是数组,sortchange事件当中并没有当数组来赋值,导致了一直都是传漏参数,因此一直是前端排序,并没有服务器端排序。

        sort: [
          {
            **direct: "DESC",**
            field: "Guid"
          }
        ]


handleSortChange(column) {
  **this.stores.user.query.sort.direction = column.order;**
  this.stores.user.query.sort.field = column.key;
  this.loadPostList();
},

编译缺少fonts目录

ERROR Failed to compile with 1 errors 9:03:36 PM
error in ./src/index.less

Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleNotFoundError: Module not found: Error: Can't resolve './fonts/ionicons.svg?v=3.0.0' in 'E:\Work\C#\Demo\DncZeus\DncZeus.App\src'

新增示例页面无法正确显示在菜单上

示例菜单设置在顶级菜单下,示例页面设置在示例菜单下。但是在运行后,示例页面直接显示在主菜单的一级菜单,没有二级菜单。
打开示例页面后,地址显示是对的“示例菜单/示例页面”。

如果没有完成该项目,请说明。

namespace DncZeus.Api.Extensions.CustomException

public class CustomAuthorizeAttribute

public void OnAuthorization(AuthorizationFilterContext context)
{
return;
// 以下权限拦截器未现实,所以直接return
var user = context.HttpContext.User;

项目对MySQL的支持略为粗糙

如题,我已经把代码改成用MySQL的了,主键全改成自增ID,数据库也进行了优化,同时修改了测试发现的Bug

无法从swagger.json自动生成api封装

输出显示Found operation objects with duplicate operationId 'Edit'. OperationId must be unique among all operations described in the API. 似乎OperationId重复了

顶级菜单怎么通过权限设置来控制?

怎么样通过设置权限来控制左边顶级菜单对不同用户的显示呢?
比如左边有个菜单是系统管理,这个菜单和他下面的所有菜单只能显示给系统管理员,其他用户都不可见。
我试了下,二级菜单可以新建一个查看的权限,来控制对特定用户的显示/隐藏。但是对顶级菜单好像不起作用。

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.