首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RethinkDB酒吧/sub ReqlPermissionError

RethinkDB酒吧/sub ReqlPermissionError
EN

Stack Overflow用户
提问于 2022-10-31 15:48:45
回答 1查看 9关注 0票数 0

我使用的是RethinkDB发布订阅。

对于交换,我使用一个名为'RPI_messages'的db和三个表:

代码语言:javascript
复制
Connector_messages
MAC_messages
Orders

我想介绍一些有关生产者和消费者方面的基本认证,如:

代码语言:javascript
复制
r.db('rethinkdb').table('users').insert({id: 'lis', password: 'somepassword'})
r.db('rethinkdb').table('users').insert({id: 'rpi', password: 'someotherpassword'})
r.db('RPi_messages').grant('lis', {read: false, write: true, config: true}) //producer
r.db('RPi_messages').grant('rpi', {read: true, write: false, config: true}) //consumers

r.db('rethinkdb').table('permissions')显示了这一点:

代码语言:javascript
复制
{
"database": "RPi_messages" ,
"id": [
"lis" ,
"007928e5-c654-4311-b3aa-a834c62dcf88"
] ,
"permissions": {
"config": true ,
"read": false ,
"write": true
} ,
"user": "lis"
}

问题:当我试图发布或订阅exchange时,它会抛出一个异常:

代码语言:javascript
复制
ReqlPermissionError: User `lis` does not have the required `config` permission in:
r.db_create('RPi_messages')
rethinkdb.errors.ReqlPermissionError: User `rpi` does not have the required `config` permission in:
r.db_create('RPi_messages')

这是否意味着我的用户需要拥有全局权限?任何帮助都非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-10-31 16:14:24

所以,经过相当多的尝试和错误,我使它工作。对于其他任何人:对于发布子系统中的每个用户,您都需要在全局范围上获得config许可,如下所示:

代码语言:javascript
复制
r.grant('lis', {read: false, write: false, config: true});
r.grant('rpi', {read: false, write: false, config: true});

...and对表或(在我的例子中)数据库作用域上的权限如下:

代码语言:javascript
复制
r.db('RPi_messages').grant('lis', {read: true, write: true, config: true}); //publisher
r.db('RPi_messages').grant('rpi', {read: true, write: false, config: true}); //sunscriber

如果我错了就纠正我,但这在我看来不太安全。这些权限是必需的,因为want的pub子系统中的exchange类会查看exchange表是否存在,如果它不存在就会创建。这意味着,任何获得客户端订阅设备的人都可以在数据库中创建任意数量的表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74265833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档