Permify权限系统从v1.0升级到v1.1的全面指南

Permify权限系统从v1.0升级到v1.1的全面指南

permify Permify is an open-source authorization service inspired by Google Zanzibar. permify 项目地址: https://gitcode.com/gh_mirrors/pe/permify

Permify是一个现代化的权限服务系统,它使用声明式的权限语言来定义和管理复杂的权限模型。在v1.1版本中,Permify引入了一些重要的语法和API变更,本文将详细介绍这些变化,帮助开发者顺利完成版本升级。

一、DSL上下文访问方式变更

在权限规则中访问上下文数据的方式发生了重要变化,这是v1.1最显著的语法改进。

v1.0的上下文访问方式

在v1.0版本中,开发者需要通过request.field_name的方式访问传入的上下文数据:

entity account {
    permission withdraw = check_balance(request.amount, balance) and owner
}

这种方式需要显式地将参数传递给规则函数,增加了代码冗余。

v1.1的新访问方式

v1.1引入了更简洁的context.data对象来访问上下文数据:

entity account {
    permission withdraw = check_balance(balance) and owner
}

rule check_balance(balance double) {
    (balance >= context.data.amount) && (context.data.amount <= 5000)
}

这种改进带来了以下优势:

  1. 减少了参数传递,使规则定义更加简洁
  2. 上下文数据集中管理,提高了代码可读性
  3. 更符合现代编程语言的访问习惯

二、查询实体范围的新特性

v1.1为实体查询API引入了scope字段,这是一个强大的过滤机制。

范围限定功能详解

scope字段允许开发者对查询结果进行精细控制,例如:

"scope": {
    "repository": {
        "data": ["r1", "r2"]
    },
    "organization": {
        "data": ["o2"]
    }
}

这个特性特别适用于以下场景:

  • 多租户系统中限制查询范围
  • 大型系统中提高查询性能
  • 实现基于数据分区的权限检查

完整请求示例

{
    "metadata": {
        "snap_token": "your_token",
        "schema_version": "1.1",
        "depth": 100
    },
    "entity_type": "repository",
    "permission": "edit",
    "subject": {
        "type": "user",
        "id": "u1",
        "relation": ""
    },
    "scope": {
        "repository": {
            "data": ["r1", "r2"]
        },
        "organization": {
            "data": ["o2"]
        }
    },
    "page_size": 20,
    "continuous_token": ""
}

三、分页限制的移除

v1.1取消了对page_size字段的最大值限制(原v1.0限制为100),这一变化带来了更大的灵活性:

  1. 可以一次性获取更多结果,减少API调用次数
  2. 适用于需要完整数据集的分析场景
  3. 开发者可以根据实际需求自由设置分页大小

升级建议

  1. 逐步迁移:先在不影响生产环境的分支上测试v1.1的变更
  2. 语法检查:重点关注DSL中上下文访问方式的修改
  3. 性能测试:特别是使用大page_size的场景
  4. 文档更新:确保团队文档与v1.1特性保持同步

Permify v1.1的这些改进使权限系统更加灵活和强大,同时也保持了向后兼容性。理解这些变化将帮助开发者更好地利用Permify构建安全、高效的权限系统。

permify Permify is an open-source authorization service inspired by Google Zanzibar. permify 项目地址: https://gitcode.com/gh_mirrors/pe/permify

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陆蜜彬

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

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

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

打赏作者

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

抵扣说明:

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

余额充值