码迷,mamicode.com
首页 > Web开发 > 详细

基于.netstandard的权限控制组件

时间:2017-09-04 09:56:51      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:asp   安装   bcd   control   span   策略   rem   ext   extension   

基于.netstandard的权限控制组件

Intro

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

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

GetStarted

  1. 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
    
  2. 实现自己的权限控制显示策略类

    • 实现页面元素显示策略接口 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

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

    • 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()
        });

     

  4. 控制 Action 的方法权限

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

  5. 控制页面元素的显示

    通过 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

基于.netstandard的权限控制组件

标签:asp   安装   bcd   control   span   策略   rem   ext   extension   

原文地址:http://www.cnblogs.com/weihanli/p/AccessControlHelper.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!