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

火山引擎 最新活动