netcore权限控制_实现对ASP.NETMvc及Asp.NetCore的权限控制

AccessControlHelper

Intro

由于项目需要,需要在 基于 Asp.net mvc 的 Web 项目框架中做权限的控制,于是才有了这个权限控制组件。

项目基于 .NETStandard,同时支持 asp.net mvc(.NET faremwork4.5以上) 和 asp.net core 项目(asp.net 2.0以上),基于 ASP.NET MVC 和 ASP.NET Core 实现的对 Action 的访问控制以及页面元素的权限控制。

GetStarted

安装权限控制组件 WeihanLi.AspNetMvc.AccessControlHelper

asp.net:

Install-Package WeihanLi.AspNetMvc.AccessControlHelper

asp.net core:

dotnet add package WeihanLi.AspNetMvc.AccessControlHelper

实现自己的权限控制显示策略类

实现页面元素显示策略接口 IControlAccessStrategy

实现 Action 访问显示策略接口 IActionAccessStrategy

示例代码:

程序启动时注册自己的显示策略

asp.net mvc

可基于Autofac实现的依赖注入,在 autofac 的 Ioc Container中注册显示策略,并返回一个可以从Ioc Container中获取对象的委托或者实现 IServiceProvider 接口的对象,参考:https://github.com/WeihanLi/AccessControlHelper/blob/master/samples/PowerControlDemo/Global.asax.cs#L23

//autofac ContainerBuildervar builder = new ContainerBuilder();// etc...// register accesss controlbuilder.RegisterType().As();

builder.RegisterType().As();var container = builder.Build();// ImportantAccessControlHelper.RegisterAccessControlHelper(type => container.Resolve(type));

asp.net core

// Configureapp.UseAccessControlHelper();// ConfigureServicesservices.AddAccessControlHelper();

控制 Action 的方法权限

通过 AccessControl 和 NoAccessControl Filter 来控制 Action 的访问权限,如果Action上定义了 NoAccessControl 可以忽略上级定义的 AccessControl,另外可以设置 Action 对应的 AccessKey

使用示例:

[NoAccessControl]public IActionResult Index(){ return View();

}

[AccessControl]public IActionResult About(){

ViewData["Message"] = "Your application description page."; return View();

}

[AccessControl(AccessKey = "Contact")]public IActionResult Contact(){

ViewData["Message"] = "Your contact page."; return View();

}

控制页面元素的显示

为了使用比较方便,建议在页面上导入命名空间,具体方法如下,详见 Samples:

asp.net mvc

在 项目的 Views 目录下的 web.config 文件中添加命名空间 WeihanLi.AspNetMvc.AccessControlHelper

asp.net core

在 Views 目录下的 **_ViewImports.cshtml** 中引用命名空间 WeihanLi.AspNetMvc.AccessControlHelper

@using AccessControlDemo

@using WeihanLi.AspNetMvc.AccessControlHelper// add WeihanLi.AspNetMvc.AccessControlHelper@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

通过 HtmlHelper 扩展方法来实现权限控制

SparkContainer

@using(Html.SparkContainer("div",new { @class="container",custom-attribute = "abcd" }))

{

@Html.Raw("1234")

}

@using (Html.SparkContainer("span",new { @class = "custom_p111" }, "F7A17FF9-3371-4667-B78E-BD11691CA852"))

{

@:12344}

没有权限访问就不会渲染到页面上,有权限访问的时候渲染得到的 Html 如下:

1234
12344

SparkLink

@Html.SparkLink("Learn about me »", "http://weihanli.xyz",new { @class = "btn btn-default" })

有权限访问时渲染出来的 html 如下:

Learn about me »

SparkButton

@Html.SparkButton("12234", new { @class= "btn btn-primary" })

有权限访问时渲染出来的 html 如下:

12234

Contact

如果您在使用中遇到了问题,欢迎随时与我联系。

相关文章:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值