专栏首页Web技术研发视频系列 | Casbin权限实战:入门分享

视频系列 | Casbin权限实战:入门分享

Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。

Casbin支持以下编程语言:

特性

Casbin 做了什么:

  1. 自定义请求的格式,默认的请求格式为{subject, object, action}
  2. 访问控制模型及其策略的存储。
  3. 支持RBAC中的多层角色继承,不止主体可以有角色,资源也可以具有角色。
  4. 支持超级用户,如 rootAdministrator,超级用户可以不受授权策略的约束访问任意资源。
  5. 支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如 /foo/bar 可以映射到 /foo*

Casbin 不做的事情:

  1. 身份认证 authentication(即验证用户的用户名、密码),casbin只负责访问控制。应该有其他专门的组件负责身份认证,然后由casbin进行访问控制,二者是相互配合的关系。
  2. 管理用户列表或角色列表。 Casbin 认为由项目自身来管理用户、角色列表更为合适, 用户通常有他们的密码,但是 Casbin的设计思想并不是把它作为一个存储密码的容器。而是存储RBAC方案中用户和角色之间的映射关系。

基础要点

Casbin中最核心的三个概念:Model, Policy, Enforcer

Model就是一个CONF文件,基于PERM metamodel (Policy, Effect, Request, Matchers)。

Policy是动态存储policy rules的,可以存在.csv文件或数据库中。

Enforcer决定一个"subject"对一个"object"是否有"action"的权限。

安装

通过composer安装:

composer require casbin/casbin

小试牛刀

创建 model.confpolicy.csv 文件:

model.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

policy.csv:

p, alice, data1, read
p, bob, data2, write

创建一个Casbin决策器需要有一个模型文件和策略文件为参数:

require_once './vendor/autoload.php';

use Casbin\Enforcer;

$e = new Enforcer("path/to/model.conf", "path/to/policy.csv");

在需要进行访问控制的位置,通过以下代码进行权限验证:

$sub = "alice"; // the user that wants to access a resource.
$obj = "data1"; // the resource that is going to be accessed.
$act = "read"; // the operation that the user performs on the resource.

if ($e->enforce($sub, $obj, $act) === true) {
    // 允许 alice 读取 data1
} else {
    // 拒绝请求, 显示错误
}

【bilibili视频】ThinkPHP5.1+Casbin权限实战:入门分享。

连接地址:https://www.bilibili.com/video/BV1kz4y1Z7vd

本文分享自微信公众号 - 万少波的播客(Tinywanblog),作者:Tinywan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 视频系列 | Casbin权限实战:基于角色的RBAC授权

    身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。系统确定您是否就是您所说的使用凭据。在公共和专用网络中,系统通过登录密码验证用户身份。身份...

    Tinywan
  • 视频系列 | Casbin权限实战:RESTful及中间件使用

    RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口...

    Tinywan
  • Go 语言入门练手项目推荐

    大家好,我是 roseduan,经常看到一些小伙伴学习完 Go 语言的基础知识之后,无法找到合适的练手项目,然后就很迷茫。

    roseduan
  • [Rust][权限控制][Casbin] Rust 下成熟好用的权限控制库

    Casbin是基于 Go 语言的权限控制库。它支持 ACL, RBAC, ABAC 等常用的访问控制模型。

    MikeLoveRust
  • Gin集成Casbin进行访问权限控制

    Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型,Casbin只负责访问控制[1]。

    没有故事的陈师傅
  • 支持MACRBACABAC多种模型的Golang访问控制框架 – casbin

    casbin casbin是一个用Go语言打造的轻量级开源访问控制框架(https://github.com/hsluoyz/casbin),目前在GitHub...

    FB客服
  • 从别人的代码中学习golang系列--03

    这篇博客还是整理从https://github.com/LyricTian/gin-admin 这个项目中学习的golang相关知识。

    coders
  • Go之Casbin简介,安装,模型,存储,函数

    Casbin是一个强大的,高效的开源访问控制框架,其权限管理机制支持多种访问控制模型

    常见_youmen
  • 基于Casbin的Docker权限管理访问控制插件

    Docker是目前主流的一种容器技术。为了解决多用户同时访问Docker时产生的安全问题,Docker设计了访问控制插件(Authorization Plugi...

    FB客服
  • go-admin-基于Gin + Vue + Element UI的前后端分离权限管理系统

    系统初始化极度简单,只需要配置文件中,修改数据库连接,系统启动后会自动初始化数据库信息以及必须的基础数据

    ccf19881030
  • beego利用casbin进行权限管理——第四节 策略更新

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • 使用casbin完成验证授权

    上一篇讲了搭建一个身份认证系统,可以看到借助dex搭建一个安全可靠的身份认证系统并不是太难。本篇再讲一下用casbin完成验证授权。

    jeremyxu
  • 使用casbin完成验证授权.md

    上一篇讲了搭建一个身份认证系统,可以看到借助dex搭建一个安全可靠的身份认证系统并不是太难。本篇再讲一下用casbin完成验证授权。

    jeremyxu
  • Go 每日一库之 casbin

    权限管理在几乎每个系统中都是必备的模块。如果项目开发每次都要实现一次权限管理,无疑会浪费开发时间,增加开发成本。因此,casbin库出现了。casbin是一个强...

    用户7731323
  • 【阅读清单】系列文章清单列表(二)

    动手学深度学习 https://cloud.tencent.com/developer/inventory/1621"

    云加社区
  • 高效、简单、方便管理与维护的开源运维工单系统

    ferry工单系统是一个集工单统计、任务钩子、RBAC权限管理、灵活配置流程与模版于一身的开源工单系统,当然也可以称之为工作流引擎。

    用户6784452
  • 工具系列 | HTTP API 身份验证和授权

    在用户使用API发出请求之前,他们通常需要注册API密钥或学习其他方法来验证请求。

    Tinywan
  • 钢材信息小程序开发总结(三) ---EggJS

    使用access_token请求获取前一天的用户画像 注意: 在零点前后数据会获取不到

    治电小白菜
  • Web前端开发推荐阅读书籍、学习课程下载

    学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢?

    慕白

扫码关注云+社区

领取腾讯云代金券