不用代码做网站,网站建设深,无锡室内设计学校,wordpress知更鸟菜单修改Casbin.NET - 开源访问控制库介绍
Casbin 是一个强大且高效的开源访问控制库#xff0c;支持多种访问控制模型#xff0c;包括 ACL、RBAC 和 ABAC 等。
主要功能
定义访问策略#xff1a;支持基于 {subject, object, action} 的访问策略定义#xff0c;并允许和拒绝授权…Casbin.NET - 开源访问控制库介绍Casbin是一个强大且高效的开源访问控制库支持多种访问控制模型包括ACL、RBAC和ABAC等。主要功能定义访问策略支持基于{subject, object, action}的访问策略定义并允许和拒绝授权。存储管理处理访问控制模型及其策略的存储。角色映射管理用户与角色之间的映射关系以及角色间的层级关系即RBAC中的角色继承。超级用户支持内置对超级用户的识别如root或administrator这些用户无需显式权限即可执行任意操作。规则匹配提供多种内置运算符以实现复杂的规则匹配逻辑例如keyMatch可将具体资源路径/foo/bar映射到通配符模式/foo*上。不涵盖的功能需要注意的是Casbin并不涉及以下领域用户的身份验证过程企业级开源方案比如Keycloak。用户及角色列表的具体维护工作。不管理用户或角色列表。项目本身管理这些实体通常更方便。用户通常有自己的密码而Casbin并非设计为密码容器。不过Casbin会在RBAC场景中存储用户-角色映射关系。支持的语言Casbin提供了对多种编程语言的支持使其能够轻松地集成进各类项目和开发流程之中。根据提供的信息整理出Casbin在不同编程语言中的实现版本及其状态如下编程语言项目名称项目链接状态GoCasbinGitHub 仓库production-readyJavajCasbinGitHub 仓库production-readyNode.jsnode-CasbinGitHub 仓库production-readyPHPPHP-CasbinGitHub 仓库production-readyPythonPyCasbinGitHub 仓库production-ready.NETCasbin.NETGitHub 仓库production-readyDelphiCasbin4DGitHub 仓库experimentalRustCasbin-RSGitHub 仓库production-ready这些实现都基于Casbin的核心概念支持多种访问控制模型并可在各自的语言环境中使用。运行原理Casbin基于PERM元模型Policy, Effect, Request, Matchers将访问控制模型抽象为CONF配置文件。这意味着更改或升级项目的授权机制只需调整相应的配置即可完成。最基本的访问控制模型是ACLAccess Control List。其CONF文件内容如下所示# 请求定义 [request_definition] r sub, obj, act # 策略定义 [policy_definition] p sub, obj, act # 策略效果 [policy_effect] e some(where (p.eft allow)) # 匹配器 [matchers] m r.sub p.sub r.obj p.obj r.act p.act对应的示例策略数据可能是这样的p, alice, data1,readp, bob, data2,write这表示alice被允许读取data1而bob则可以写入data2。我们还支持通过在末尾添加反斜杠\实现多行模式# Matchers [matchers] m r.sub p.sub r.obj p.obj \ r.act p.act此外如果您正在使用ABAC可以尝试在Casbin的Go版中使用操作符jCasbin和Node-Casbin尚不支持# Matchers [matchers] m r.obj p.obj r.act p.act || r.obj in (data2, data3)但是你应该确保数组的长度大于1否则会导致它死机。对于更多的运营商您可以查看 govaluate如何使用安装可以通过NuGet包管理器安装Casbin.NETdotnetaddpackage Casbin.NET初始化执行器创建一个Casbin执行器实例需要指定模型文件和策略文件的位置varenewEnforcer(path/to/model.conf,path/to/policy.csv);注意也可以从数据库加载策略而非本地文件。权限检查当有资源访问需求时可调用如下代码进行权限校验varsubalice;// 想要访问资源的用户varobjdata1;// 将要被访问的资源varactread;// 用户对资源进行的操作if(awaite.EnforceAsync(sub,obj,act)){// 允许 alice 读取 data1}else{// 拒绝请求抛出异常}项目地址GitHub 项目地址https://github.com/casbin/Casbin.NET以上是对Casbin.NET的简要概述它是一个灵活、强大的访问控制解决方案适用于需要细粒度权限管理的各种.NET应用程序。