.NET开源快速开发框架Colder(NET452+AdminLTE版)html
本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本框架,可以极大的提升项目开发效率。前端
本版本框架采后端采用基于.NET4.52的ASP.NETMVC,前端从原来的Easyui升级为基于Bootstrap的AdminLTE,支持响应式布局,提升用户体验(提升逼格)。git
框架主要功能以下表:github
功能 | 详细描述 | 支持状况 |
---|---|---|
用户登陆、密码修改 | 用户登陆、密码修改 | ✔ |
系统用户管理 | 系统用户管理 | ✔ |
角色管理 | 角色管理 | ✔ |
权限管理 | 基于用户的权限、基于角色的权限、菜单权限、操做权限(按钮权限)、接口权限、数据权限 | ✔ |
系统日志 | 支持使用ElasticSearch记录日志 | ✔ |
快速开发 | 经过数据库直接生成实体层、业务逻辑层、视图层代码,无需编码便可实现CURD | ✔ |
数据库操做封装 | 使用基于EF的仓储模式、封装经常使用的CURD,支持单库事物和分布式事物 | ✔ |
多数据库支持 | 使用基于EF的仓储模式,支持各大主流关系型数据库(SQLServer、MySQL、Oracle、PostgreSQL) | ✔ |
缓存支持 | 支持系统自带缓存和Redis缓存、封装操做接口、简单易用 | ✔ |
分布式Session支持 | 禁用自带Session,使用自定义Session,一键开启分布式Session | ✔ |
页面响应式 | 基于Bootstrap,支持响应式布局,移动端可以轻松访问 | ✔ |
其它各类帮助类库及插件 | 其它各类帮助类库及插件 | ✔ |
后台展现以下:算法
源码地址:https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTEsql
各版本请看下表:数据库
.NET版本 | 前端UI | 地址 |
---|---|---|
.NET4.52 | AdminLTE | https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE |
.NET4.52 | Easyui | https://github.com/Coldairarrow/Coldairarrow.Fx.Net.Easyui.GitHub |
.NET Core2.1 | Easyui | https://github.com/Coldairarrow/Coldairarrow.Fx.Core.Easyui.GitHub |
.NET4.0 | Easyui | https://github.com/Coldairarrow/Coldairarrow.Fx.Net40.Easyui.GitHub |
操做系统:Windows 10后端
开发工具:Visual Studio 2017缓存
SDK:安装.NET4.52及以上安全
数据库:SQLServer2008 R2及以上
使用本框架须要构建基础数据库,具体步骤以下:
建立基础数据库的Sql脚本文件在:/docs/初始化文件/db.sql,在数据库中运行db.sql脚本便可建立数据库:
Colder.Fx.Net.AdminLTE
若Sql运行出错,请直接使用同目录下的db.bak还原数据库
打开src目录下Colder.Fx.Net.AdminLTE的解决方案,以下图
以下图所示依次展开05.Coldairarrow.Web=>Config=>database.config,配置数据库链接字符串,name不用修改,connectionString改成上述建立的数据库(若不清楚数据库链接字符串请自行百度搜索教程)
自此基础数据库配置完成。
因为本框架支持自动生成代码的核心功能,此功能是根据数据库的表结构来生成代码的
所以规定每张表都有一个主键,列名为Id,类型为字符串,实际添加数据时默认使用GUID的字符串形式,表中的每一个列都须要有描述信息(建议这样操做,若不按照这个标准则须要一些额外的改动才可以成功运行)。
请先还原Nuget包
而后将05.Coldairarrow.Web设为启动项目,成功运行便可进入如下页面
项目代码分层,详情见源码中的说明书,博客园放会被判为重复文章,敬请谅解。
在01.Coldairarrow.Util中的GlobalSwitch类中,设置了各个参数,其中RunModel须要重点关注一下,若RunModel==RunModel.LocalTest,则系统会直接跳过登陆,默认使用Admin超级管理员登陆,其它参数请看注释。
使用此功能请确保GlobalSwitch.RunModel= RunModel.LocalTest
此功能为本框架的核心功能,可以自动生产完整的可运行代码,具体使用以下:
首选须要有数据库源,由于代码生成是根据数据库表来生成的。
菜单:开发=>数据库链接管理
若列表中没有目标数据源,则添加数据库链接
数据链接名、链接字符串、数据库类型便可。添加完成后便可看到链接字符串信息。
有了数据库链接以后,便可进行代码生成。
菜单:开发=>代码生成
选择数据库,而后勾选须要生成代码的数据库表,点击生成代码会弹出生成选项(这里暂时只能勾选Dev_Project,其他表全是系统基础表,不要勾选,不然会被覆盖,致使异常,请勾选本身的业务表进行生成):
生成选项中能够选择须要生成的类型,能够默认生成实体层、业务逻辑层、控制器和视图。
生成区域对应MVC中的Areas,请按需填入(必填)
这里示例填写ProjectManage,点击生成按钮,便可完成代码生成。生成后的代码在项目解决方案中,将代码文件包括进入项目
默认生成后的文件是隐藏的,须要点击显示全部文件按钮,便可看到生成后的新文件
右键新的文件夹,包括在项目中
因为是新生成的代码,因此才配置新的菜单
如上图,在Web项目中的Config/SystemMenu.config中配置菜单,模仿原有菜单便可,其中url是指页面的路径,Permission是指若须要访问此菜单须要的权限(对应权限配置),若没有此权限,则菜单也中不会显示此菜单,修改完成后从新编译生成(权限相关模块进行了缓存,从新生成会清缓存),从新运行便可看到新的项目菜单以下:
整个代码生成过程,无需编写代码便可完成一张表的CRUD,固然须要根据具体业务中进行相应的修改,本次示例中字段比较少,可是当一张表的字段不少时,那么此功能可以将开发效率提升几个档次。
若要使用登陆功能,请将GlobalSwitch中的RunModel改成RunModel.Publish
默认超级管理员帐号为:Admin
密码为:123456
管理系统登陆的用户
菜单:系统=>用户管理,以下页面
点击右侧设置权限,能够设置用户权限,详情见<权限管理>模块
具体权限相关配置见权限管理模块
管理系统角色,角色是权限的载体,合理分配角色有利于权限管理
菜单:系统=>角色管理
操做中能够设置角色的权限,详情见<权限管理>模块
通常状况下,后台管理系统多少会涉及权限管理,所以本框架提供了一个灵活、高效、简洁的权限管理系统。
首先,权限分为两种,即操做权限和数据权限,其中操做权限报货系统用户权限和AppId权限,系统用户权限就是指操做用户具有哪些权限,而当对外提供Api接口时,为了保证接口的安全性(若不在乎可忽略),一般会提供接口签名算法,其中AppId和AppSecret是必备的,经过对AppId设置权限,便可控制接口的权限。数据权限比较复杂,若采用纯SQL方式,那么会更加复杂,本框架全程采用EF做为ORM框架,经过对IQueryable<T>进行过滤,便可完成数据权限控制。
用户权限:若对每一个用户都设置对应的权限,那么工做量无疑是十分巨大的,所以引入了角色的概念,角色是权限的集合载体,那么属于此角色的用户就继承了角色的权限,固然某些特殊用户须要拥有本身的不属于角色的特殊权限,所以最终用户拥有的权限就是本身的权限和所属角色权限的并集。
权限使用:
权限定义:
如上图,在Permission.config中定义了各个权限
权限配置:
在系统用户管理和系统角色管理中能够设置用户和角色的权限,把须要的权限勾选便可。
权限使用:
如上图所示,在须要控制权限的页面中,调用方法:PermissionManage.OperatorHasPermissionValue("sysuser.manage")
这个方法是判断操做者用户是否含有sysuser.manage权限值,其中sysuser是指Permission.config中定义的module的value属性,manage是指permission中的value属性,用.链接便是最终权限值。
更详细的使用方式,请参考源代码。
菜单:系统=>接口秘钥管理
菜单:系统=>系统日志
框架使用EF+LINQ进行联表操做,核心在于对IQueryable<T>的使用,另可网上搜EF+LINQ的相关教程。
示例以下图:
在01.Coldairarrow.Util项目中的GlobalSwitch,将DatabaseType改成须要的便可,对应的数据库链接字符串固然也要改成对应数据库的
在具体的Business类中重写父类BaseBusiness的构造函数便可,按照本身的需求重写对应的构造函数,同时须要确保数据库链接字符串已添加
欢迎使用本框架,若以为不错,请比心
Github:https://github.com/Coldairarrow,请Statrt
转自博客园:https://www.cnblogs.com/coldairarrow/p/10486184.html
---------------------学习永无止境,技术永无上限,代码就是艺术-----------------------