专栏首页Web技术研发视频系列 | Casbin权限实战:基于角色的RBAC授权

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

1、上一个视频的录制回顾

  • 有同学反馈,声音比较小
  • 有些环节比较乱,不懂(课程是大家对于身份认证和访问授权没有区分开)

2、HTTP API 身份验证和授权

二者定义

认证(authentication):指证明身份正确

授权(authorization):指允许某种行为

API可能会对您进行身份验证,但不会授权您发出特定请求。

认证(authentication)

身份验证是关于验证您的凭据,如用户名/用户ID和密码,以验证您的身份。系统确定您是否就是您所说的使用凭据。在公共和专用网络中,系统通过登录密码验证用户身份。身份验证通常通过用户名和密码完成,有时与身份验证因素结合使用,后者指的是各种身份验证方式。

更多查看:HTTP API 身份验证和授权 本文分享自微信公众号 - 万少波的播客(Tinywanblog)

3、官方-Model语法

  • 官方-Model语法
  • 仔细研究一下官方的model语法
  • 需要注意的事项

4、官方-基于角色的访问控制

官方-基于角色的访问控制

5、RBAC是什么?

RBAC是什么?

6、官方-RBAC模型

官方-RBAC模型编辑器

Model 定义

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

Policy 定义

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

g, alice, data2_admin

1、两个用户 alice 和 bob 2、一个角色 data2_admin 3、用户 alice 继承 data2_admin

Request (请求验证权限)

alice, data2, read
Enforcement Result (验证结果)
true

6、代码实战

1、添加策略

Casbin::addPermissionForUser('alice', 'data1', 'read');
Casbin::addPermissionForUser('bob', 'data2', 'write');

// var_dump(Casbin::addPermissionForUser('alice', 'data1', 'read'));
// var_dump(Casbin::addPermissionForUser('bob', 'data2', 'write'));

2、给 data2_admin 角色分配权限

Casbin::addPermissionForUser('data2_admin', 'data2', 'read');
Casbin::addPermissionForUser('data2_admin', 'data2', 'write');

// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'read'));
// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'write'));

3、给 alice 分配角色 data2_admin

Casbin::addRoleForUser('alice', 'data2_admin');

// var_dump(Casbin::addRoleForUser('alice', 'data2_admin'));

alice 将会拥有的所有 data2_admin 权限

4、分配完角色和权限后,数据库中的策略规则大致如下:(查看数据)

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

g, alice, data2_admin

5、验证权限 alice 具有data2_admin 角色,继承data2_admin角色的全部权限.

Casbin::enforce('alice', 'data2', 'read');

// var_dump(Casbin::enforce('alice', 'data2', 'read'));

RBAC 控制管理

// 1、添加策略
// var_dump(Casbin::addPermissionForUser('alice', 'data1', 'read'));
// var_dump(Casbin::addPermissionForUser('bob', 'data2', 'write'));

// 2、给 data2_admin 角色分配权限
// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'read'));
// var_dump(Casbin::addPermissionForUser('data2_admin', 'data2', 'write'));

// 3、给 alice 分配角色 data2_admin
// var_dump(Casbin::addRoleForUser('alice', 'data2_admin')); 

// 4、严重权限
// var_dump(Casbin::enforce('alice', 'data2', 'read'));

【bilibili视频】ThinkPHP5.1+Casbin权限实战:基于角色的RBAC授权 连接地址:https://www.bilibili.com/video/BV1A541187M4

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

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

原始发表时间:2020-11-12

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    Tinywan
  • 使用casbin完成验证授权

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

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

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

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

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

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

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

    常见_youmen
  • 支持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库出现了。casbin是一个强...

    用户7731323
  • Gin集成Casbin进行访问权限控制

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

    没有故事的陈师傅
  • beego利用casbin进行权限管理——第四节 策略更新

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

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

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

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

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

    Tinywan
  • 工具系列 | HTTP API 身份验证和授权

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

    Tinywan
  • beego利用casbin进行权限管理——第二节 策略存储

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

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

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

    FB客服
  • 高效、简单、方便管理与维护的开源运维工单系统

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

    用户6784452
  • 【程序源代码】RBAC基于角色的权限管理系统

    基于角色的权限管理系统(RBAC),采用Springboot开发。系统简单易懂,前端使用Vue、Quasarframework开发,页面简洁美观。后端核心框架使...

    程序源代码
  • 这个权限开源项目,真牛逼!【附源码】

    权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。

    用户5224393
  • RBAC 模型 - 权限系统是如何进行架构设计的?

    大家在平时使用网页的时候,遇到和权限相关的场景应该很多,比如视频网站的会员视频,管理后台的访问控制,那么,本文将带大家了解一下,权限系统的通用设计模型理念,和如...

    用户3806669

扫码关注云+社区

领取腾讯云代金券