RethinkDB Adapter 项目教程

RethinkDB Adapter 项目教程

rethinkdb-adapter RethinkDB adapter for Casbin https://github.com/casbin/casbin rethinkdb-adapter 项目地址: https://gitcode.com/gh_mirrors/re/rethinkdb-adapter

1. 项目目录结构及介绍

rethinkdb-adapter/
├── examples/
│   └── casbinmodel.conf
├── .gitignore
├── LICENSE
├── README.md
├── rethinkadapter.go
└── rethinkadapter_test.go

目录结构说明

  • examples/: 包含示例配置文件 casbinmodel.conf,用于演示如何配置 Casbin 模型。
  • .gitignore: Git 忽略文件,指定哪些文件和目录不需要被版本控制。
  • LICENSE: 项目的开源许可证文件,本项目使用 MIT 许可证。
  • README.md: 项目的介绍文档,包含项目的基本信息、安装和使用说明。
  • rethinkadapter.go: 项目的主要代码文件,实现了 RethinkDB 适配器的主要功能。
  • rethinkadapter_test.go: 项目的测试文件,包含对 rethinkadapter.go 中功能的单元测试。

2. 项目启动文件介绍

项目的启动文件是 rethinkadapter.go,该文件实现了 RethinkDB 适配器的主要功能,允许 Casbin 从 RethinkDB 加载和保存策略。

主要功能

  • NewAdapter: 创建一个新的 RethinkDB 适配器实例。
  • NewAdapterDB: 创建一个新的 RethinkDB 适配器实例,并指定数据库和表名。
  • LoadPolicy: 从 RethinkDB 加载策略。
  • SavePolicy: 将策略保存到 RethinkDB。

示例代码

package main

import (
    "os"
    r "gopkg.in/gorethink/gorethink.v3"
    "github.com/casbin/casbin"
    "github.com/adityapandey9/rethinkdb-adapter"
)

func getConnect() r.QueryExecutor {
    url := os.Getenv("RETHINKDB_URL")
    if url == "" {
        url = "localhost:28015"
    }
    session, _ := r.Connect(r.ConnectOpts{
        Address: url,
    })
    return session
}

func main() {
    session := getConnect()
    a := rethinkadapter.NewAdapter(session)
    e := casbin.NewEnforcer("examples/casbinmodel.conf", a)
    e.LoadPolicy()
    e.Enforce("alice", "data1", "read")
    e.SavePolicy()
}

3. 项目的配置文件介绍

项目的配置文件主要是 examples/casbinmodel.conf,该文件定义了 Casbin 的访问控制模型。

配置文件内容

[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

配置文件说明

  • request_definition: 定义了请求的格式,包括 sub(主体)、obj(对象)和 act(动作)。
  • policy_definition: 定义了策略的格式,与请求格式一致。
  • policy_effect: 定义了策略的效果,这里表示只要有一条策略允许,则请求被允许。
  • matchers: 定义了匹配规则,这里表示请求的主体、对象和动作必须与策略中的完全匹配。

通过以上配置,Casbin 可以根据 RethinkDB 中的策略来判断请求是否被允许。

rethinkdb-adapter RethinkDB adapter for Casbin https://github.com/casbin/casbin rethinkdb-adapter 项目地址: https://gitcode.com/gh_mirrors/re/rethinkdb-adapter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏纲墩Dean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值