asp.net core mvc权限掌握 在视图中掌握操纵权限的代码示例细致引见【C#.Net教程】,asp.net,core,mvc
作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:30评论:0
在asp.net core mvc中供应了权限考证框架,前面的文章中已引见了怎样举行权限掌握设置,权限设置好后,权限考证逻辑自动就会实行,但是在某些情况下,我们能够须要在代码里或许视图中经由过程手工体式格局推断权限,我们如今就来引见下细致的操纵要领。
假如在掌握器要领里想要推断当前用户是不是具有某个权限,能够直接运用HttpContext.User.HasClaim(string cliamtype,string cliamvalue)要领举行推断,该要领返回bool范例,返回true示意具有权限,不然不具有。
在视图上我们每每须要掌握某个按钮或许超链接的权限,具有权限按钮就显现,不然不现实。那怎样才到达如许的结果?要领引见以下:
1,在视图中直接运用HttpContext.User.HasClaim(string cliamtype,string cliamvalue)推断权限,然后掌握按钮是不是显现
@if(HttpContext.User.HasClaim("User","Delete")) { <input type='button' value="删除"/> }
上面的代码写在视图中,示意假如具有用户的删除权限,就显现删除按钮。这类体式格局比方在一切须要考证的处所,都根据如许的花样去誊写。
2,借助于asp.net core mvc的新特征taghelper能够简化第一种体式格局,至于什么是taghelper,以及它的作用这里就不再引见,人人能够百度或谷歌搜刮,这里直接引见怎样自定义权限考证的taghelper。
<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>
上面的代码是我们终究的结果,示意这个超链接是有在用户具有claim(type=goods,value=edit)权限的时刻才显现,下面我们就来引见怎样完成这个taghelper。
1)起首我们定义一个类,派生自TagHelper类,并增添claim属性定义,并增添ViewContext
class ClaimTagHelper:TagHelper { private const string ClaimAttributeName = "asp-claim"; public ClaimTagHelper() { } [HtmlAttributeName(ClaimAttributeName)] public string Claim { get; set; } }
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 mvc权限掌握 在视图中掌握操纵权限的代码示例细致引见的内容,更多相关内容请关注ki4网(www.ki4.cn)!
相关推荐
- 用 Composer 开源组件构建自己的 PHP 框架_php教程,php,框架,mvc
- 实例引见asp.net项目开辟中罗列的运用【C#.Net教程】,asp.net,枚举
- 分享一个asp.net完成多个文件同时下载的要领【C#.Net教程】,asp.net,多文件下载
- asp.net core实例教程之非常处置惩罚与静态文件教程【C#.Net教程】,asp.net ,core,异常处理,静态文件
- 关于ASP.NET中过滤器、模子绑定的实例详解【C#.Net教程】,asp.net,mvc,模型绑定,asp.net,mvc,过滤器,mvc,模型绑定
- Asp.Net MVC进修总结之过滤器详解(图文详解)【C#.Net教程】,asp.net,mvc,过滤器
- asp.net怎样运用js文件【C#.Net教程】,asp.net
- asp.net是什么【C#.Net教程】,asp.net,asp.net是什么
- asp.net与php哪一个好?【php问题】,asp.net,php
- asp.net mvc中完成Forms身份验证身份验证流程的实例【C#.Net教程】,asp.net,Forms,验证
你 发表评论:
欢迎- .Net教程排行
-
- 1案例分享c++ map的运用和 查找机能测试【C#.Net教程】,性能,map,c++
- 2细致引见C# string花样的日期时候字符串转为DateTime范例的要领【C#.Net教程】,C#,string,DateTime
- 3c#怎样运用?c#的基础语法【C#.Net教程】,c#,关键字
- 4详解ASP.NET中衔接数据库设置要领【C#.Net教程】,ASP.NET,数据库,配置
- 5C# DataSet机能最好实践【C#.Net教程】,C#,DataSet
- 6.net和c#有什么区别【C#.Net教程】,.net,c#
- 7C#_挪用封装的一个类完成导出Excel表格的功用【C#.Net教程】,C# Excel表格
- 8asp .net 面试题及答案分享【C#.Net教程】,.net,自己,整理,问题,面试
- 9让WebAPI 返回JSON花样的数据实例教程【C#.Net教程】,javascript,WebAPI,JSON,api,web,搭建,返回
- 最新文章
- 广而告之