基於.netstandard的許可權控制組件 Intro 由於項目需要,需要在 基於 Asp.net mvc 的 Web 項目框架中做許可權的控制,於是才有了這個許可權控制組件。 項目基於 .NETStandard,同時支持 asp.net mvc(.NET faremwork4.5以上) 和 asp.n ...
基於.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
- 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: [email protected]