您的位置:首页 > 其它

基于.netstandard的权限控制组件

2017-09-05 13:05 155 查看

基于.netstandard的权限控制组件

Intro

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

项目基于 .NETStandard,同时支持 asp.net mvc(.NET faremwork4.5以上) 和 asp.net core 项目(asp.net 2.0以上)

GetStarted

Nuget Package https://www.nuget.org/packages/WeihanLi.AspNetMvc.AccessControlHelper/
安装权限控制组件
WeihanLi.AspNetMvc.AccessControlHelper
,可以直接在 VisualStudio 中 Nuget 包管理器中搜索安装,也可以通过下面的命令来安装:

asp.net:

Install-Package WeihanLi.AspNetMvc.AccessControlHelper

asp.net core:

dotnet add package WeihanLi.AspNetMvc.AccessControlHelper


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

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

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

示例代码:

ASP.NET Mvc https://github.com/WeihanLi/AccessControlHelper/blob/master/PowerControlDemo/Helper/AccessStrategy.cs
ASP.NET Core https://github.com/WeihanLi/AccessControlHelper/blob/master/AccessControlDemo/Startup.cs#L60
程序启动时注册自己的显示策略

asp.net mvc
Global
文件中注册显示策略

AccessControlHelperExtensions.RegisterAccessStragety(new AccessControlHelperOptions
{
ActionAccessStrategy = new ActionAccessStrategy(),
ControlAccessStrategy = new ControlAccessStrategy()
});


 

asp.net core
Startup
文件中注册显示策略

// Method1

app.UseAccessControlHelper(options => { options.ActionAccessStrategy = new ActionAccessStrategy(), options.ControlAccessStrategy = new ControlAccessStrategy() });

// Method2

app.UseAccessControlHelper(new AccessControlHelperOptions
{
ActionAccessStrategy = new ActionAccessStrategy(),
ControlAccessStrategy = new ControlAccessStrategy()
});


 

控制
Action
的方法权限

通过
AccessControl
NoAccessControl
Filter 来控制
Action
的访问权限

控制页面元素的显示

通过
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 如下:

<div class="container" custom-attribute="abcd">1234</div>

<span class="custome_p111">12344</span>


 

Contact

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

Contact me: weihanli@outlook.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: