• 讲人:大石头

  • 时间:2018-11-14 晚上20:00

  • 地点:钉钉群(组织代码BKMV7685)QQ群:1600800

  • 内容:魔方Newlife.Cube权限系统的使用及模版覆盖详解


准备

源码地址: https://github.com/NewLifeX/NewLife.Cube

演示地址:http://cube.newlifex.com  可以直接注册用户以及选用第三方登录

单点登录:htts://sso.newlifex.com

讲课视频1:https://pan.baidu.com/s/1zEUkG7YXnVdvTLq6dJBhzg

讲课视频2:https://pan.baidu.com/s/10omTlET99DF-4cgG2bObzw


开始

1.初识魔方  魔方后台结构介绍

魔方是一个基于ASP.NET MVC的多角色的权限管理系统,新版本的设计目标是所有页面封装在DLL里边,通过覆盖修改视图,做到极简化的使用

1登录

  其中集成了SSO单点登录及第三方OAuth登录,其中既可以作为OAuth客户端也可以作为OAuth服务端,可以自己内部发布一个sso服务器端,只需要发布cube.dll,xcode.dll,core.dll三个dll的空项目即可

1.1顶部菜单栏

  顶部菜单有栏目点击及用户修改注销等功能

1.2工作台首页

   应用系统:地址可以解决Nginx转发的路径不对的问题

   域名地址:多ip或者Nginx代理的显示

重启系统功能特别有用(缓存没有更新,配置没有生效,重启后会重新加载,轻量级重启,不用iis整个重启

程序集列表:可以分析是否缺少第三方组件的引用

.netcore session不建议使用,所以以后尽量不用session

内部版本,后边两个字段是编译出来的,编译时间来自于内部版本比如2.4.6805.17968,其中内部版本号6805基于2000年1月1日的天数,后边的17968字段是后边的秒数除以2的一个结果

1.3左侧区域菜单

  菜单是树状的多层菜单,菜单树是内存计算的,1000对以内会整体缓存,因此菜单更新后不一定实时显示,因为有缓存,需要重启一下

2.系统菜单中的4个基本功能

   用户

   记录每个用户,可以对用户信息进行管理,其中清除密码功能比较特别,清除密码后可以任意密码登录,登录密码作为新密码存储在数据库中

   日志

   日志作为系统的安全与审计,是不能修改,添加,删除的.其中包含操作记录,访问统计等

   角色

   系统默认了管理员,游客,普通用户,高级用户等几个角色,其中在第一个默认登录系统的账号会自动替换为管理员角色,admin自动降级为游客,角色与名称可以根据自己的业务进行修改,其中我们支持多角色,一个主角色,多个次要角色,多角色是或的关系,只要有权限都支持.

   菜单

   对系统菜单与业务菜单进行编辑与修改,其中系统菜单里边修改过后一定要勾选上必要,不然会被魔方初始化覆盖,其中可见指的是是否在左侧菜单栏中显示,可以自定义权限

  业务菜单

  系统启动后会自动扫描区域与控制器,将区域作为一级菜单加载到数据库,将控制器作为二级子菜单加载到区域菜单下边,其中菜单名字通过[DisplayName("菜单名称")]来注解

 3.高级功能

  3.1魔方设置

    基本设置

  对系统的一些基本设置,包括全局调试,日志等级,日志目录,插件服务器设置等

    系统设置

    对系统的名称进行设置,登录页,页面头部的名称,其中开发者模式的开关控制着页面的sql输出,以及高级功能里边的生成Form表单与生成List数据页的视图,启用与否代表整个魔方系统是否启用

    数据中间设置

    xcode中间件设置,其中最重要的反向工程设置,默认为on,这个时候会根据实体文件对数据表进行检测,其中会新增字段,不能删除与修改字段,缓存时间一般是10秒,可以设置默认的备份数据库目录,主要针对sqlite文件数据库

    魔方设置

    显示时间控制,作为整个页面的数据库查询时间的一个辅助开发功能设置

    插件服务器设置,这个是所有的插件以及资源服务器的一个设置

    工作台页面设置,作为一个后台权限系统登录进来展示的首页

    布局页设置,是整个mvc布局页的一个设置

    密码登录,启用注册,自动注册强行绑定用户设置都是跟用户相关的一些设置

    下拉框选择,其中下拉框开启后样式为bootstrap,页面加载会比较耗时,如果追求极速,可以考虑关闭下拉框选择

    SSL作为https的强制使用

   3.2文件

    在线的文件管理系统,可以直接上传bin文件以及下载sqlite的备份文件下载到本地

   3.3页面右边高级功能

    清空数据表:其中清空表是checkident操作,会把自增ID重新从1开始

    删除全部:删除当前符合查询条件的全部记录

    导出xml与json,按照xml或者json格式导出当前符合查询条件的记录

    导出excel,测试过最多导出过90w的记录

    生成Form表单:生成表单视图模版文件,可以随意修改视图页面

    生成List数据模版,随意修改列表数据页

4.魔方项目引用及使用

  4.1魔方dll的引用

    新建.NET Framework  MVC项目

  

   在新建项目中右键选择管理Nuget包中搜索NewLife.cube然后安装到本项目中,该cube.dll会自动引入XCode.dll与core.dll,其中cube所需的资源包,项目会自动下载到Content目录下边

  

安装完成后会在目录生成Model.xml与Build.tt文件,其中Model.xml文件是数据库参考文件

数据库模型文件详细说明见图所标识:

Index为默认主键索引,其中表名+主键名称会在实体类Biz.cs中自动生成扩展属性

4.2实体的生成

在build.tt文件上右键选择运行自定义工具就会在Model.xml文件中设定的目录下生成实体文件.cs数据文件,biz.cs业务文件,分部类,一个类放在多个文件里边,biz.cs只是在第一次生成,以后不会覆盖生成,.cs每次更新表都会重新生成

4.3魔方的使用区域与控制器

  在项目上右键在弹出菜单中选择添加,在子菜单中点击区域按钮新增区域Areas,即在左侧新建一个一级菜单

  

我新建了一个Test的区域,修改区域的AreaRegistration文件,将继承修改为AreaRegistrationBase,并使用注解[DisplayName("区域名称即一级菜单的名称")]的方式为该菜单的名称

新建控制器继承自EntityController<实体类>,会自动生成一个二级子菜单,通过注解[DisplayName("二级菜单的名称")]

运行得到该实体列表页,要想列表中某些字段不显示,只需要在控制器中的构造方法里边输入ListFields.Remove("列名”)

public class MyUserController : EntityController<Log>
{       public MyUserController() {ListFields.Remove(Log._.CreateUserID);}}

4.4高级按钮生成表单与列表的视图文件

生成模版文件后,点击工程的显示所有按钮,然后在对应的控制器的view目录下将模版文件包括在项目中,这个时候可以对模版进行任意覆盖修改,自己可以多修改运行试试效果,特别注意

需要在views下边的webconfig文件中加入 以下的命名空间

   <add namespace="NewLife" />
        <add namespace="NewLife.Cube" />
        <add namespace="NewLife.Reflection" />
        <add namespace="NewLife.Web" />
        <add namespace="XCode" />
        <add namespace="XCode.Membership" />

5.魔方的精髓 模版覆盖

 5.1模版介绍

  模版分为表单模版Form.cshtml,列表模版List.cshtml,布局模版,每个模版可以分别单独覆盖,可以局部整体覆盖,真正做到任意覆盖,其中最重要的是可以根据优先级顺序进行整体局部覆盖,需要整站覆盖直接修改     Ace_Layout.cshtml

    其中优先级顺序依次为项目Views-->控制器Views-->Areas Views-->魔方内置Views

    列表模版详细说明如下:整个模版分为_List_Toolbar.cshtml,_List_Data.cshtml,_List_Pager.cshtml

其中_List_Data.cshtml又包含两部分数据部分:_List_Data_Item.cshtml 与 操作部分:_List_Data_Action.cshtml

  

_List_Toolbar.cshtml是最复杂的功能其中包含批量操作_List_Toolbar_Batch.cshtml,日期搜索_List_Search.cshtml对应(_DateRange.cshtml)不知为何要这样多一个search的页面,不敢揣摩圣意,关键字查询_List_Toolbar_Search.cshtml,高级按钮功能,_List_Toolbar_Adv.cshtml

现在示例一下修改Search的查询:首先在控制器中重载一下Search方法,在实体中实现Search的高级搜索方法

   protected override IEnumerable<UserOnline> Search(Pager p){         var id = p["id"];//取当前页面的id值            //p["q"]关键字的值return UserOnline.Search(p["q"],p);}

最后可以使用自定义工具RazorGenerator将视图文件编译成DLL文件,可以联机搜索安装

当项目Views同时使用cshtml文件与DLL的时候优先使用cshtml文件

神奇黑科技:http://cube.newlifex.com/School/Class/json?q=11&Sort=ID&Desc=True&key=abcdefg

魔方支持json,xml导出数据,其中key为token,q为关键字,sort是排序字段

原文地址: https://www.cnblogs.com/oliveyun/p/9962635.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

魔方Newlife.Cube权限系统的使用及模版覆盖详解相关推荐

  1. linux系统编程笔记02——Linux命令:修改文件权限命令chmod、chgrp、chown详解

    Linux命令:修改文件权限命令chmod.chgrp.chown详解 Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限 ...

  2. Linux系统7个运行级别图文详解

    Linux系统7个运行级别图文详解 当安装linux操作系统时将选择下列那一个操作 ______ A.选择 "图形登录方式" 设定系统开始运行级为4 B.选择 "文本登录 ...

  3. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  4. linux命令打包文件,Linux系统中打包文件的命令详解

    linux系统中遇到要打包文件的时候我们该使用什么命令呢?下面由秋天网 Qiutian.ZqNF.Com小编为大家整理了linux系统中打包文件的命令详解的相关知识,希望对大家有帮助! linux系统 ...

  5. 大型网站系统架构系列:负载均衡详解(一)

    大型网站系统架构系列:负载均衡详解(一) 2016-03-20 架构说 面对大量用户访问.高并发请求,海量数据,可以使用高性能的服务器.大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比 ...

  6. pe系统如何读取手机_图文详解怎么用pe重做系统

    上期小编讲解了小编教你笔记本电脑开不了机怎么办,本次正特手机网小编给大家讲解一下图文详解怎么用pe重做系统,最近有不少的小伙伴都问小编说,使用pe重做系统简单吗?对于大家提问pe重做电脑系统的问题,其 ...

  7. tecplot脚本在Linux系统下运行,Linux系统下安装Tecplot的步骤详解

    众所周知,Tecplot是Linux系统中的数据分析软件,Tecplot的功能正在变得更加完善,使用的人群也在逐渐增多.下面,我们就跟随U大侠小编一起来看看Linux系统下安装Tecplot的步骤详解 ...

  8. android系统的手机文件夹目录详解

    android系统的手机文件夹目录详解 一.文件夹 1./acct/     系统回收站,删除的系统文件. 2./cache/     缓存 3. /data/      用户的所有程序相关数据   ...

  9. Windows XP系统下架设FTP服务器实例详解

    Windows XP系统下架设FTP服务器实例详解 [实例1]公司网络环境:ADSL + 路由器 + 交换机  + PC机,我们单位要在客户端架设FTP服务器,当然在服务器端也是可以的,主要用于内部资 ...

  10. php能做定时关机吗,window_win10怎么定时关机?Win10系统定时关机命令使用方法详解,对于电脑用户来说,定时关机 - phpStudy...

    win10怎么定时关机?Win10系统定时关机命令使用方法详解 对于电脑用户来说,定时关机有时候经常会用到,比如夜间下载东西或者下载一些大文件,而又没有时间一直守着电脑,这时候设置电脑定时关机就很实用 ...

最新文章

  1. 化工热力学补考成功,几天没有头脑了,赶紧赏自己几题Leetcode动态规划算法最长系列
  2. Spring Boot WebMagic 入库时 mapper注入提示空指针,以及正确的操作
  3. mac部署文件服务器,MAC 搭建本地服务器
  4. exception日志 php_PHP中错误与异常的日志记录用法分析
  5. 738. 单调递增的数字
  6. bokeh python_Python Bokeh数据可视化教程
  7. 动态规划实战7 leetcode-221. Maximal Square
  8. 浏览器 pad android,安卓平板专享 推荐五款Pad版应用浏览器
  9. Java小程序--多彩时钟表盘的制作
  10. Android跳转qq进行聊天
  11. 使用Pytorch搭建U-Net网络并基于DRIVE数据集训练(语义分割)学习笔记
  12. 拓嘉辰丰:拼多多运营方法和技巧
  13. 一只喵的西行记-3 唱斑马斑马的黑马
  14. vdbench 配置案例及参数说明
  15. 有计算机考试励志的文案,抖音冲刺高考励志文案
  16. MySQL表级锁之表锁
  17. 关于嵌入式软件开发的一些思考
  18. [os]os vmware 手机连接
  19. (转)iOS应用架构谈 本地持久化方案及动态部署
  20. 服务器可视化监控系统,可视化服务器监控系统

热门文章

  1. mysql 5.5 字符集_MySQL 5.5客户端字符集相关参数
  2. 使用NFC读卡器ACR122u读取银行卡信息
  3. 产品结构图、功能结构图、信息结构图,区别在这里
  4. 想要下载,却没有积分,CSDN你做个人吧
  5. 将经纬度坐标用线段形式在地图上链接起来
  6. PID算法之模糊PID
  7. Web_信息搜集(DAY2)
  8. ssm-学子商城-项目第六天
  9. 使用ESXi-Customizer为esxi注入第三方驱动
  10. python病毒攻击代码_用python写的简单病毒(无害) -