基于.netstandard的权限控制组件

基于.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: [email protected]

时间: 2025-01-06 19:54:21

基于.netstandard的权限控制组件的相关文章

rbac基于角色的权限控制组件目录

权限组件之表设计 权限组件之录入数据 权限组件之获取登入用户的所有权限 权限组件之将登录用户权限写入到session中 session源码 权限组件之粒度到按钮级别1 权限组件之粒度到按钮级别2 权限组件之权限动态数据转换 权限组件之左侧菜单的页面展示 原文地址:https://www.cnblogs.com/liuye1990/p/9757049.html

Forms身份验证和基于Role的权限验证

Forms身份验证和基于Role的权限验证 从Membership到SimpleMembership再到ASP.NET Identity,ASP.NET每一次更换身份验证的组件,都让我更失望.Membership的唯一作用就是你可以参考它的实现,它的数据库创建和扩展方面就真的让人实在无法使用了. 当大家欢呼着让ASP.NET开发走上ASP MVC的正确道路时,身份验证组件却走的更远了:SimpleMembership除了第三方验证的参考价值,它的主键和对领域模型的入侵让它成了摆设,而ASP.NE

基于角色的权限管理系统

我们开发业务系统的时候,基本上都会涉及到权限管理模块,要求不同的人看到不同的菜单,操作不同的按钮,看到不同的数据.很多初学者面对这样的需求不知道如何下手,特别是稍微复杂点的权限,更是找不到方向,为此我们夜鹰教程网特别推出了这套基于角色的权限管理视频教程,通过给用户分配角色,给角色分配权限,来实现权限管理.这样一来,可以实现不同的人管理不同的菜单,操作不同的按钮,看到不同的数据.可以划分权限组,每个组的成员拥有相同的权限.也可以把同一个人分配到不同的权限组,具有多个权限组的权限,实现权限的组合.

第二章 基于二进制进行权限管理的理论知识

源代码GitHub:https://github.com/ZhaoRd/Zrd_0001_AuthorityManagement 1.介绍 第一章主要是介绍了这个DEMO的来由和主要使用的技术,这章内容主要是介绍如何通过二进制的位运算进行权限控制的内容. 第一章发布之后,有不少网友.园友反映程序代码运行不起来,很感谢您们的反馈,刚刚进行了代码修复,已经同步到github,感兴趣的朋友可以加我QQ! 2.二进制的位运算以及如何进行权限判断 基于二进制的权限管理,这个内容是我在两年前接触到过的一个知

基于DDDLite的权限管理OpenAuth.net 1.0版正式发布

距离上一篇OpenAuth.net的文章已经有5个多月了,在这段时间里项目得到了很多朋友的认可,开源中国上面的Star数接近300,于是坚定了我做下去的信心.最近稍微清闲点,正式推出1.0版,并在阿里云上部署了一个在线演示(文章结尾处给出在线演示链接).相比刚开始时的版本,现在整个架构已经稳定,系统功能性,代码可读性维护性都有质的飞跃. 本文主要介绍系统结构及未来一段时间的开发计划. 项目简介 本项目采用经典DDD架构(用沃恩.弗农大神的话,其实这是DDD-Lite)思想进行开发的一套符合国情的

[02]基于webservice的权限系统

前面,已经介绍完了,如何利用cxf搭建webservice.那我们接下来就来介绍此权限系统的表结构. 此权限管理系统分为部门管理,员工管理,角色管理,权限管理,人员授权和业务管理(此处不涉及) 角色管理包括角色定义和角色授权.角色授权的过程是给指定角色以某个权限来完成授权: 权限管理即权限的定义和设置,权限管理的过程是给某个权限以某个对象操作表来完成管理: 人员授权的过程就是给人员以某个角色来完成授权. 这三句话,希望大家仔细品味,这是权限管理系统的核心所在,如果不是很好理解的话,可以接和我下面

从零开始——基于角色的权限管理01(补充)

此博文较为详细的介绍从零开始--基于角色的权限管理01文中的两个部分的流程(解释代码). 1) index.jsp中提交跳转action action的login,获取jsp页面传过来的用户名密码和验证码,进行验证 首先到userDao中,执行login方法,判断是否存在这组用户名和密码 接着到roleDao中,执行getRoleNameById以获取角色名 最后,进入main.jsp中 2)在main.jsp中,有一个树的显示,再次进入authServlet中执行menuAction   先后

基于角色的权限控制

首先要明白的有一个表就是需要记录整个项目中控制器和方法,这样在权限检测的时候就可以检测数据库对应的角色有没有这个控制器或者方法的权限, 但是需要明白的是在开发的过程中当然需要把这种权限给取消,这样在开发过程是需要增加一个控制器或者方法就不需要验证权限,然后开发好了之后就需要 在权限表中增加该控制器和方法. 一般基于角色的权限控制,需要用到下面的几张表 1.用户表2,权限表,3.角色表,4权限角色关系表5用户角色关系表 这种方式是用户通过,用户角色关系表查询出自己的角色,然后通过权限角色关系表查出

使用Lync 2013 基于角色的权限控制:RBAC 给用户分配指定的操作权限

使用场景: 在大型的Lync统一沟通系统的日常运维中,我们需要为不同角色的管理员分配不同的Lync管理权限,在Lync Server 2013上面就使用了基于角色的权限控制:RBAC ,它里面分了多种权限角色,包括 CsAdministrator,CsUserAdministrator,CsVoiceAdministrator,CsServerAdministrator,CsViewOnlyAdministrator,CsHelpDesk等等,不同的角色有不同的Lync管理权限, 例如,当我们只