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

  • 讲人:大石头

  • 时间: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.初识魔方  魔方后台结构介绍

640?wx_fmt=png

魔方是一个基于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项目

  640?wx_fmt=png

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

  640?wx_fmt=png

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

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

 

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

640?wx_fmt=png

4.2实体的生成

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

640?wx_fmt=png

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

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

  640?wx_fmt=png

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

640?wx_fmt=png

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

640?wx_fmt=png

640?wx_fmt=png

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


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

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

640?wx_fmt=png

 

生成模版文件后,点击工程的显示所有按钮,然后在对应的控制器的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" />

640?wx_fmt=png

640?wx_fmt=png

  

5.魔方的精髓 模版覆盖

 5.1模版介绍

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

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

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

640?wx_fmt=png

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

  640?wx_fmt=png

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

640?wx_fmt=png

 

现在示例一下修改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

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4383 [八省联考2018]林克卡特树(树形dp+wqs二分)

[八省联考2018]林克卡特树 题目大意&#xff1a;给定一棵有负权边的树&#xff0c;现在必须恰好删去kkk条边&#xff0c;并加上恰好kkk条权值为000的边&#xff0c;要求最大化它的直径长度。 首先考虑删去KKK条边的效果&#xff1a;把整棵树变成k1k1k1个连通块 然后用0权变把这…

bzoj4025-二分图【线段树分治,并查集】

正题 题目链接:https://darkbzoj.tk/problem/4025 题目大意 nnn个点mmm条边&#xff0c;每条边会在一个TTT以内的时间段内出现&#xff0c;对于任意一个TTT以内的时刻求图是否是一个二分图。 1≤n,T≤105,1≤m≤21051\leq n,T\leq 10^5,1\leq m\leq 2\times 10^51≤n,T≤105,1…

牛客题霸 [删除有序链表中重复的元素] C++题解/答案

牛客题霸 [删除有序链表中重复的元素] C题解/答案 题目描述 删除给出链表中的重复元素&#xff08;链表中元素从小到大有序&#xff09;&#xff0c;使链表中的所有元素都只出现一次 例如&#xff1a; 给出的链表为1\to1\to21→1→2,返回1 \to 21→2. 给出的链表为1\to1\to 2 \…

我在微软做研发 | 亚洲创新的科研之力

丹棱君有话说&#xff1a;在庆祝微软亚洲研究院成立 20 周年之际&#xff0c;微软亚洲研究院的几位科学家向我们讲述了在这里&#xff0c;如何以科研热情推动了技术创新。走进微软亚洲研究院的办公园区&#xff0c;便会被这里安静的研究氛围所包围。在当今越来越多追求速度、提…

codeforces1208 F. Bits And Pieces(SOS DP)

heyuhhh高维前缀和总结 SOS DP SOS Dynamic Programming [Tutorial] 之前写过相关的题目枚举子集dp 枚举子集 F[mask]∑i∈maskA[i],i&maskiF[mask]\sum_{i\in mask}A[i],i\&maskiF[mask]i∈mask∑​A[i],i&maski 方法1&#xff0c;O(4n)O(4^n)O(4n)暴力枚举 for(…

P5956-[POI2017]Podzielno【数学】

正题 题目链接:https://www.luogu.com.cn/problem/P5956 题目大意 BBB进制下&#xff0c;给出序列aaa&#xff0c;aia_iai​表示数字iii有多少个。求一个最大的XXX在BBB进制下&#xff0c;由给出的数字组成&#xff08;不一定要用完&#xff09;&#xff0c;且其是B−1B-1B−1…

牛客题霸 [回文数字(palindrome-number)] C++题解/答案

牛客题霸 [回文数字] C题解/答案 题解: 首先&#xff1a;负数不可以回文&#xff08;起码看着就不对称&#xff09; 然后我们将x翻转&#xff0c;很简单sumsum*10x%10; 因为x最终会变成0&#xff0c;所以用y先存一下x 最后比较sum与y是否相等 面试&#xff1a; class Solut…

codeforces1494 D. Dogeforces(构造)

昨晚1h20min做完了3个题&#xff0c;看下排名600左右&#xff0c;感觉稳可以上分了&#xff0c;于是看了下D构造&#xff1f;感觉不太会没细想于是看了看E感觉好像和之前有一个题目很像&#xff08;那个题我讨论了好长时间&#xff09;&#xff0c;然后磨叽磨叽还有20min感觉写…

P4126-[AHOI2009]最小割【网络流,tarjan】

正题 题目链接:https://www.luogu.com.cn/problem/P4126 题目大意 给出nnn个点mmm条边的一张有向图和起点终点。对于每条边求其是否是最小割的可行割/必须割 1≤n≤4000,1≤m≤600001\leq n\leq 4000,1\leq m\leq 600001≤n≤4000,1≤m≤60000 解题思路 一些结论吧&#xff…

调试.NET CORE代码

前言core也用了很长一段时间了&#xff0c;发现很多小伙伴不知道如何调试core的代码。可想而知&#xff0c;以前使用mvc的时候&#xff0c;不需要发布代码&#xff0c;直接iis地址指向项目源码&#xff0c;然后附加到进程w3wp.exe就可以调试了。在core的项目里面已经不能这样玩…

牛客题霸 [二叉树中是否存在节点和为指定值的路径] C++题解/答案

牛客题霸 [二叉树中是否存在节点和为指定值的路径] C题解/答案 题目描述 给定一个二叉树和一个值\ sum sum&#xff0c;判断是否有从根节点到叶子节点的节点值之和等于\ sum sum 的路径&#xff0c; 例如&#xff1a; 给出如下的二叉树&#xff0c;\ sum22 sum22&#xff0c;…

P4292-[WC2010]重建计划【长链剖分,线段树,0/1分数规划】

正题 题目链接:https://www.luogu.com.cn/problem/P4292 题目大意 给出nnn个点的一棵树&#xff0c;然后求长度在[L,U][L,U][L,U]之间的一条路径的平均权值最大。 解题思路 先上二分0/10/10/1分数规划&#xff0c;然后变成求最长在[L,U][L,U][L,U]之间的路径。 很经典的点分…

HDU4035 Maze(树上期望)

Maze 状态表示&#xff1a;fuf_ufu​表示在uuu节点走出迷宫期望次数&#xff0c;dud_udu​表示度数 首先很容易想到下面式子fukuf1(1−ku−eu)∑u→vfv1duf_uk_uf_1(1-k_u-e_u)\frac{\sum _{u\to v}f_v1}{d_u}fu​ku​f1​(1−ku​−eu​)du​∑u→v​fv​1​ 每个节点有一个类…

从头开始学eShopOnContainers——Visual Studio 2017环境配置

一、安装和配置Docker环境1、安装Docker CE for Windows从官方网站下载并安装&#xff0c;https://docs.docker.com/docker-for-windows/install/。默认情况下Docker for Windows使用Hyper-V运行Linux VM。 如果您没有安装/启用Hyper-V&#xff0c;它将被安装&#xff0c;您可能…

牛客题霸 [判断二叉树是否对称] C++题解/答案

[牛客题霸 [判断二叉树是否对称] C题解/答案](https://www.nowcoder.com/practice/1b0b7f371eae4204bc4a7570c84c2de1?tpId117&&tqId34937&rp1&ru/ta/job-code-high&qru/ta/job-code-high/question-ranking) 题目描述 给定一棵二叉树&#xff0c;判断琪…

ASP.NET Core 生成验证码

点击蓝字关注我使用验证码保护网站免受垃圾信息的选择有很多&#xff0c;比如Google ReCaptcha和captcha.com。这两者都可以整合到ASP.NET Core应用中去。然而&#xff0c;如果你出于某些原因&#xff0c;仍然希望自己写验证码&#xff0c;例如你下网站需要在中国大陆使用&…

P4756-Added Sequence【斜率优化】

正题 题目链接:https://www.luogu.com.cn/problem/P4756 题目大意 给出序列aaa&#xff0c;设f(l,r)∣∑ilrai∣f(l,r)|\sum_{il}^ra_i|f(l,r)∣∑ilr​ai​∣。 mmm次询问若序列aaa全部加上某个数xxx&#xff0c;求最大的f(l,r)f(l,r)f(l,r)。 1≤n,m≤21051\leq n,m\leq 2\…

P4564 [CTSC2018]假面(期望)

P4564 [CTSC2018]假面 首先容易看出结界技能对第二问敌方剩余生命值期望没有影响。 如何求出第iii个人的剩余生命值期望&#xff1f; 只需要根据Ei∑j0aijfi,jE_i\sum_{j0}^{a_i}jf_{i,j}Ei​∑j0ai​​jfi,j​ 预处理fi,jf_{i,j}fi,j​&#xff1a;第iii个人的剩余生命值为j…

牛客题霸 [连续子数组的最大和] C++题解/答案

牛客题霸 [连续子数组的最大和] C题解/答案 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含…

P4234-最小差值生成树【LCT】

正题 题目链接:https://www.luogu.com.cn/problem/P4234 题目大意 给出nnn个点mmm条边的一张图。求一棵生成树使得最大边权减去最小边权最小。 1≤n≤5104,1≤m≤21051\leq n\leq 5\times 10^4,1\leq m\leq 2\times 10^51≤n≤5104,1≤m≤2105 解题思路 按照边权排序&#x…