asp.net core mvc权限控制:在视图中控制操作权限_C#教程

来源:脚本之家  责任编辑:小易  

ASP.net mvc5和asp.net.core有什么区别呢,前景如何:区别:asp.net mvc5只能运行在Windows,一般通过IIS发布。asp.net core开源,可跨平台,能够发布到Linux等系统上。asp.net core做了很多的整合工作,目前来说完成了最基本的一部分类库的迁移。前景:asp.net core肯定是以后的一种潮流,随着docker等技术的普及,跨平台的重要性凸显,必须要使用asp.net core编写的接口才能发布到linux中,也就是asp.net core编写的接口可以做成docker的镜像发布,而asp.net mvc5不能。所以最终肯定是会慢慢都转移到asp.net core上来。但是这需要一个比较久的过程。因为从asp.net mvc5转移到asp.net core需要一定时间的学习,即使在国外也需要一定过程。而国内由于语言环境、开发工具(需要VS2015才能进行asp.net core的开发)等的原因,肯定需要更久。国内的技术一直以来也比较保守。如果单纯的以在国内找个开发的工作的话,建议先熟悉下asp.net mvc5。如果确实有跨平台的需求,或者团队成员都对新技术有很高的热情,从事的也是全新的项目的话,就使用asp.net core。.net core:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个官方版本,具有跨平台 (Windows、Mac OSX、Linux) 能力的应用程序开发框架 (Application Framework),未来也将会支持 FreeBSD 与 Alpine 平台,也是微软在一开始发展时就开源的软件平台[1]  ,它经常也会拿来和现有的开源 .NET 平台 Mono 比较。由于 .NET Core 的开发目标是跨平台的 .NET 平台,因此 .NET Core 会包含 .NET Framework 的类库,但与 .NET Framework 不同的是 .NET Core 采用包化 (Packages) 的管理方式,应用程序只需要获取需要的组件即可,与 .NET Framework 大包式安装的作法截然不同,同时各包亦有独立的版本线 (Version line),不再硬性要求应用程序跟随主线版本。参考资料百度百科.百度百科[引用时间2018-1-4]www.zgxue.com防采集请勿采集本网。

在asp.net core mvc中提供了权限验证框架,前面的文章中已经介绍了如何进行权限控制配置,权限配置好后,权限验证逻辑自动就会执行,但是在某些情况下,我们可能需要在代码里或者视图中通过手工方式判断权限,我们现在就来介绍下具体的操作方法。

新框架没用过,.Net Core 2.0感觉应该是支持的。这里有一篇帖子,你可以参考一下。www.bamn.cn/course/volume/3991 实在不行你就转url吧,就像检测用户一样,凡是没有访问权

如果在控制器方法里想要判断当前用户是否具有某个权限,可以直接使用HttpContext.User.HasClaim(string cliamtype,string cliamvalue)方法进行判断,该方法返回bool类型,返回true表示具有权限,否则不具有。

不支持,core 最低是 net 4.6 以上的版本 如果使用 core 请考虑使用WIN10开发

在视图上我们往往需要控制某个按钮或者超链接的权限,具有权限按钮就显示,否则不现实。那怎么样才能达到这样的效果?方法介绍如下:

在默认 ASP.NET Core 模板中为 Visual Studio 2015 及更新版本提供的 ASP.NET Web 工具扩展中涵盖的漏洞 同时还包括微软最新网页 Kestrel .NET Core 和 ASP.NET Core 支

1,在视图中直接使用HttpContext.User.HasClaim(string cliamtype,string cliamvalue)判断权限,然后控制按钮是否显示

1、CORS的原理:CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由

@if(HttpContext.User.HasClaim("User","Delete")){<input type='button' value="删除"/>}

现在有 WebUtility.UrlDecode() 与 Microsoft.AspNetCore.Http.HttpContext Microsoft.AspNetCore新的对象没有我们常用HttpUtility.UrlDecode这个方法,将URL 中传输而编码的字

上面的代码写在视图中,表示如果具有用户的删除权限,就显示删除按钮。这种方式比如在所有需要验证的地方,都按照这样的格式去书写。

dll文件一般被存放在C:\\Windows\\System目录下。电脑系统文件因经常会受到病毒的侵扰,导致系统文件、dll文件等丢失、损坏,一些包括游戏在内的应用程序无法启动。 解决

2,借助于asp.net core mvc的新特性taghelper可以简化第一种方式,至于什么是taghelper,以及它的作用这里就不再介绍,大家可以百度或谷歌搜索,这里直接介绍如何自定义权限验证的taghelper。

Foundation(WPF)并不包含在.NET Core中。从技术上讲,.NET Core仅支持控制台应用程序。ASP.NET Core和UWP是以.NET Core为基础构建的应用程序模型。NET Standard

<a asp-claim="goods,edit" asp-action="addgoods" asp-route-id="@goods.Id" class="btn-icon " title="编辑"><i class="icon-common-edit icon-pencil"></i></a>

用Session传参。。

上面的代码是我们最终的效果,表示这个超链接是有在用户具有claim(type=goods,value=edit)权限的时候才显示,下面我们就来介绍如何实现这个taghelper。

.NET Core 版本时, 你依旧可以运行 ASP.NET Core 应用。 你也可以创建只运行在 windows 下完整 .NET 框架的 ASP.NET Core 应用。 ASP.NET 4.6 是最新的完整 .NET Fram

1)首先我们定义一个类,派生自TagHelper类,并增加claim属性定义,并增加ViewContext

你可以在 OSX 和 Linux上运行 ASP.NET Core 应用,这对于 ASP.NET 来说,这具有跨时代的意义,也给 ASP.NET 开发者和设计师们带来了全新的体验。ASP.NET Core 具有两个

class ClaimTagHelper:TagHelper{private const string ClaimAttributeName = "asp-claim"; public ClaimTagHelper() { } [HtmlAttributeName(ClaimAttributeName)] public string Claim { get; set; }}

因为微软没有击败Flash。 有趣的是,Visual Studio安装程序对新家庭成员.Net Core十分重视。当选择构建ASP.Net Web应用程序或想使用容器跨平台应用程序时,.Net Core是将

2)我们的权限控制taghelper只运用于button,a,input的元素上,所有我们需要加上HtmlTargetElement的特性,代码如下:

[HtmlTargetElement("a", Attributes = ClaimAttributeName)] [HtmlTargetElement("button", Attributes = ClaimAttributeName)] [HtmlTargetElement("input", Attributes = ClaimAttributeName, TagStructure = TagStructure.WithoutEndTag)] public class ClaimTagHelper: TagHelper{......}

3)重写TagHelper的Process方法,在方法中使用HttpContext.User.HasClaim进行权限判断。在视图中访问HttpContext必须借助于ViewContext对象,所以我们需要在当前的TagHelper类中增加ViewContext引用,具体代码如下:

public class ClaimTagHelper: TagHelper{.....[HtmlAttributeNotBound] [ViewContext] public ViewContext ViewContext { get; set; } .....}

基本条件都具备了,然后就是Process实现,直接上代码:

public override void Process(TagHelperContext context, TagHelperOutput output) { if (string.IsNullOrEmpty(Claim)) { return; } string[] claimData = Claim.Split(new char[] { '-' }, StringSplitOptions.RemoveEmptyEntries); if (claimData.Length == 1) { if (!ViewContext.HttpContext.User.HasClaim(m => m.Type == claimData[0])) { //无权限 output.SuppressOutput(); } } else { if (!ViewContext.HttpContext.User.HasClaim(m => m.Type == claimData[0] && m.Value == claimData[1])) { //无权限 output.SuppressOutput(); } }}

到这里就介绍完了,谢谢大家,如有不足之处,欢迎大家指导。

不一样ASP.NET Core 是一个用于net程序跨平台的框架,在它的基础上会重写.NET Framework(windows)、Mono( Linux),以实现所有net程序、网站的跨平台ASP.net 是一种微软推出的网站开发技术 目前一般分为 asp.net webform、asp.net mvc 两种ASP.NET Core 1.0 是一个开源跨平台的开发框架,用于构建基于云的现代 Web 应用 。它是从底层开始重新构建来提供性能优良的Web应用开发框架,可以部署在云上或者本地服务器上。另外,它使得 ASP.NET 应用更加精简和模块化(可以根据你的应用需要向里面添加其他模块),跨平台(你可以很容易的在 Windows, Mac or Linux 上开发和部署你的应用),云优化(你可以在云上在云上部署和调试你的应用)。ASP.NET又称为ASP+,不仅仅是ASP的简单升级,而是微软公司推出的新一代脚本语言。ASP.NET基于.NET Framework的Web开发平台,不但吸收了ASP以前版本的最大优点并参照Java、VB语言的开发优势加入了许多新的特色,同时也修正了以前的ASP版本的运行错误。[1-2] ASP.NET具备开发网站应用程序的一切解决方案,包括验证、缓存、状态管理、调试和部署等全部功能。在代码撰写方面特色是将页面逻辑和业务逻辑分开,它分离程序代码与显示的内容,让丰富多彩的网页更容易撰写。同时使程序代码看起来更洁净、更简单内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net core mvc基础学习之局部视图(partial views)
  • asp.net core mvc学习之视图组件(view component)
  • c#删除只读文件或文件夹(解决file.delete无法删除文件)
  • c#实现的zpl条码打印类完整实例
  • 基于一个应用程序多线程误用的分析详解
  • c#引用类型和值类型的介绍与实例
  • 杂谈try-catch-finally异常处理
  • c#实现可缓存网页到本地的反向代理工具实例
  • c#通过接口与线程通信(捕获线程状态)示例代码
  • c#创建dll类库的图文步骤
  • c#实现把dgv里的数据完整的复制到一张内存表的方法
  • c# 设计模式系列教程-桥接模式
  • ASP.net core是什么,和ASP.net一样吗?
  • ASP.net mvc5和asp.net.core有什么区别呢?前景如何?
  • 如何在ASP NET Core中实现CORS跨域
  • 如何评价asp.net core
  • Asp.Net Core 设置 .html 页为起始页
  • xp支持asp.net core2.0么
  • 微软BUG Bounty悬赏项目扩展至.NET Core和ASP.NET Core
  • 如何在ASP NET Core中实现CORS跨域
  • .net core里面用什么代替System.Web.Service
  • microsoft.aspnetcore.http 在哪个dll中
  • netstandard和.netcore的区别
  • # .net 通过onclick="window.rightbar.location.href='../core/te...
  • net core 是最新的.net版本吗
  • 如何查看 net core版本
  • Net 框架和.Net Core,我该用哪个?怎么选
  • net core 用什么开发工具
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页asp.net core mvc基础学习之局部视图(partial views)asp.net core mvc学习之视图组件(view component)c#删除只读文件或文件夹(解决file.delete无法删除文件)c#实现的zpl条码打印类完整实例基于一个应用程序多线程误用的分析详解c#引用类型和值类型的介绍与实例杂谈try-catch-finally异常处理c#实现可缓存网页到本地的反向代理工具实例c#通过接口与线程通信(捕获线程状态)示例代码c#创建dll类库的图文步骤c#实现把dgv里的数据完整的复制到一张内存表的方法c# 设计模式系列教程-桥接模式c#几种截取字符串的方法小结c#中httpwebrequest的用法详解c# datagridview添加新行的2个方c# 一个wcf简单实例c#中list〈string〉和string[]数c#连接mysql数据库的方法c#的dllimport使用方法详解c#中使用split分割字符串的几种方c#处理3种json数据的实例c#实现16进制和字符串之间转换的silverlight实现图片局部放大效果的方法c#判断操作系统位数的示例分享利用unity代码c#封装为dll的步骤分享c#中字符串编码处理c#静态方法和非静态方法详细介绍深入分析ntfs中文件被锁定导致process.stc#中label内容显示不全、不完整的解决方法c#实现的文件上传下载工具类完整实例【上c#读写config配置文件的方法c#如何将access中以时间段条件查询的数据
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved