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




