You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Casbin实时策略生效问题求助:REST API删除MongoDB存储策略后需重启才失效

Casbin实时策略生效问题求助:REST API删除MongoDB存储策略后需重启才失效

我用Go开发REST API,选了Casbin作为授权组件,同时用MongoDB Adapter从Mongo数据库加载权限策略。

我的Mongo里单条策略文档长这样:

{
  "_id": {
    "$oid": "639491f73e4c9bec05a1d1ec"
  },
  "ptype": "p",
  "v0": "admin",
  "v1": "laptops",
  "v2": "read",
  "v3": "",
  "v4": "",
  "v5": ""
}

在业务逻辑里,我会验证用户是否有权限读取laptops,这段代码是正常工作的:

// 会返回true
if can, _ := e.Enforce(user, "laptops", "read"); can {
    // 业务逻辑处理
}

现在遇到个问题:当我删除这条Mongo里的策略文档后,按道理用户应该不能再访问laptops了,但实际情况是必须重启应用才会生效,也就是说Enforce的检查不是实时的。

我想到一个临时解决办法:每次请求进来都调用LoadPolicy方法,但总觉得这是个不太优雅的“脏 hack”。

有没有大佬能给我一些帮助或者更合理的解决方案呀?

备注:内容来源于stack exchange,提问作者studio-pj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:00:29