首页 > 其他分享 >casbin-权限控制

casbin-权限控制

时间:2023-09-21 14:25:40浏览次数:36  
标签:控制 err casbin fmt 访问 act 权限

Casbin元模型:

PERM模型

P(策略)={sub,obj,act,eft}一般存储到数据库

Sub:访问实体,一般是用户或者角色,可以用来表示用户的身份信息

object:被访问的资源,例如 文件,数据库表等

act:访问的方法,例如读取,写入。

eft:策略结果,一般为空,默 认指定allow。

E(影响):决定我们是否放行

R(请求):request

M(匹配规则):r(请求)与p的匹配规则,会把r和p按照规则进行匹配,从而返回匹配结果,如果eft没有定义就返回allow,如果定义过了就返回定义的那个结果。

ACL模型:访问控制模型,基于对象(资源)和主体(角色)以及他们之间的权限规则进行权限控制。 

Casbin可以:

① 支持自定义请求格式,默认 sub,obj,act

② 具有访问控制模型model和策略policy两个核心概念

③ 支持RBAC中多层角色继承,不仅主体可以有角色,资源也可以有角色

④ 支持多种内置操作符。

不可以:

不能身份验证,casbin只负责访问控制,要有其他组件进行身份验证。

go代码

 

package main

import (
"fmt"
"github.com/casbin/casbin/v2"
gormadapter "github.com/casbin/gorm-adapter/v3"
)

func main() {
//创建适配器实例
a, _ := gormadapter.NewAdapter("mysql", "root:123456@tcp(127.0.0.1:3306)/test", true) //它是gorm库的一个函数,创建一个适配器
e, err := casbin.NewEnforcer("./casbin/model.conf", a)
/*
casbin.NewEnforcer:创建一个权限管理器实例,一般会接收casbin配置文件的路径,创建一个Enforcer(权限管理器)实例
这个实例是Casbin的核心,负责加载并管理权限模型和策略。可以用来执行访问控制的各种操作,如验证权限,判断用户是否有访问某个操作的权力。
*/
if err != nil {
fmt.Println(err.Error())
return
}
sub := "alice" //访问的实体
obj := "data" //访问资源
act := "read" //访问方法
//e.AddPolicy("alice", "data", "read")//添加权限data
ok, err := e.Enforce(sub, obj, act)
if err != nil {
fmt.Println("========================err:", err)
}
if ok == true {
fmt.Println("通过")
} else {
fmt.Println("不通过=========")
}
}

 

标签:控制,err,casbin,fmt,访问,act,权限
From: https://www.cnblogs.com/ybex/p/17719837.html

相关文章

  • OpenHarmony:如何使用HDF平台驱动控制PWM
    1、程序介绍本程序是基于OpenHarmony标准系统编写的平台驱动案例:PWM目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/b05_platform_device_pwm详细资料请参考官网:PWM平台驱......
  • 3.基本语法和浏览器控制台的使用
    掌握浏览器控制台的使用方法:源码,控制台,断点调试,应用<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><script>//语法和Java差不多,更加简单//变量varvars......
  • 部署Nginx网站服务实现访问状态统计以及访问控制功能
    部署Nginx网站服务实现访问状态统计以及访问控制功能 精选 原创小樱桃Cherry2018-06-2016:13:53博主文章分类:web服务及群集©著作权文章标签Nginx状态统计访问控制文章分类运维阅读数8135Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTT......
  • mysql权限控制
    1.授权数据表(database_name.table_name)所有的权限给'user'@'localhost'GRANTALLONdatabase_name.table_nameTO'user'@'localhost';ALL包含的权限类型如下:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,RELOAD,PROCESS,REFERENCES,IND......
  • HCIA-项目试验1:配置Console控制台认证
    <Huawei>system-view[Huawei][Huawei]user-interfaceconsole0[Huawei-ui-console0]disthis#user-interfacecon0user-interfacevty04#return[Huawei-ui-console0]auth[Huawei-ui-console0]authentication-modepassword[Huawei-ui-console0][Huawei-......
  • 文件/目录的权限和归属 访问权限 读取:允许查看文件内容、显示目录列表 写入:允许修改
    文件/目录的权限和归属 访问权限读取:允许查看文件内容、显示目录列表写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录可执行:允许运行程序、切换目录归属(所有权)属主:拥有改文件或目录的用户账号属组:拥有该文件或目录的组账号,组中用户查看文件/目录的权限和归属......
  • INT13H 是一个基本的硬盘控制器中断,用于在实模式下进行对硬盘的读写操作。它提供了多
    INT13H是一个基本的硬盘控制器中断,用于在实模式下进行对硬盘的读写操作。它提供了多个功能来操控硬盘,包括磁盘读、磁盘写、磁盘参数查询等。以下是一些常见的INT13H功能:磁盘读取:功能号2:从磁盘上读取扇区到内存缓冲区。寄存器AH=02h,AL表示要读取的扇区数量,CH表示磁道号......
  • 控制台游戏1.0
    `includeincludeincludeusingnamespacestd;classGame{public:Game(){this->energy=this->energy2=0;this->HP=this->HP2=100;this->round=1;}voidstart(){cout<<"Welcometomagicfight!"<<endl;st......
  • Python 获取控制台输入的值
    获取控制台输入参数if__name__=='__main__':while1:question=input('用户:')answer="你的问题是:"+questionprint('VipQA',answer)......
  • 直播带货源码,评论框自动控制高度
    直播带货源码,评论框自动控制高度HTML <divclass="cont_comment_cont">  <divid="textareaHeight">    <textareaid="textarea"placeholder="在此输入评论内容~"></textarea>  </div>  <div>发布</di......