casbin的分析
casbin的分析问题一般的项目中,都会有权限认证模块,用来控制不同的角色,可以访问的功能。比较出名的权限控制模型有ACL和RABC。如果每个项目中,都重新实现权限控制模块,这样操作会比较繁琐,希望有一个统一的简单模块来控制权限,而casbin这个开源项目,可以支持acl,rabc和abac这几个模式的权限控制,能够通过简单的配置就集成到项目中使用。 原理分析casbin通过配置文件来对权限模型进行配置,将一个权限的模型划分为:request,policy,policy_effect和matchers,典型的配置格式(RABC): # Request definition [request_definition] r = sub,obj,act # Policy definition [policy_definition] p = sub,act # Policy effect [policy_effect] e = some(where (p.eft == allow)) # Matchers [matchers] m = r.sub == p.sub && r.obj == p.obj && r.act == p.act sub,act,分别表示,用户(或者分组),资源对象,权限
有了权限定义的文件之后,还需要有一个用户或者角色分组的存储的信息: p,alice,data1,read p,bob,data2,write 这里的格式,表示:
当alice去读取data1的时候,就会触发matchers的规则,通过存储的角色信息进行运算,按照上面的例子,就可以通过审核。 通过对权限配置和用户角色存储的结构进行组合,然后按照matchers的规则,就可以得出用户是否有权限对资源进行访问了。 支持的比较函数对于匹配规则,可以支持简单的运算,还有就是支持几个内置的函数,方便进行匹配运算: fm.AddFunction("keyMatch",util.KeyMatchFunc) fm.AddFunction("keyMatch2",util.KeyMatch2Func) fm.AddFunction("regexMatch",util.RegexMatchFunc) fm.AddFunction("ipMatch",util.IPMatchFunc) 函数的含义:
支持对主流的框架支持需要支持的框架,包括web框架和存储框架,使用adapter进行支持,现在可以支持的框架,包括:
更多的查看官网 多语言支持现在有多种语言版本的支持:
更多的查看官网 总结casbin使用起来比较简单容易,功能比较强大,能够满足需求,而且代码比较清晰易懂,作者也很有趣,值得使用。 参考资料
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |