当前位置: 首页 > 知识库问答 >
问题:

Couchdb-Lucene和经过身份验证的用户的ad-hoc查询

应向晨
2023-03-14

我使用CouchDB来存储来自不同来源的数据,使用CouchDB lucene来允许临时查询。这对我来说很重要,因为我在一个提要中显示数据,我希望这个提要是可过滤的。CL似乎是完美的选择。

不过,我还想为feed应用程序引入权限——用户只有在拥有查看权限的情况下才能查看feed项目。

现在,我希望能够运行特别查询,并且只返回当前经过身份验证的用户有权读取的提要项。

我能找到的唯一解决方案(到目前为止)是在我存储其他用户所有权限的每个提要项目中添加一个“权限”字段(显然跳过了对该项目没有权限的用户)

permissions: [{user_id: '123', read: true, write: true}, ...]

然后在CL中索引这个数组。

虽然这可能会奏效,但我觉得被迫将权限元数据嵌套在提要项中有点糟糕。。。这甚至可能是一个更好的解决方案,而不是把它分开,但我只是不喜欢这样,我似乎在这里没有选择。

唯一的其他解决方案(除了转储CouchDB)是在不考虑权限的情况下运行临时查询,然后在服务器上运行第二个查询,选择所有“我的项目”并进行设置交叉。但这些集合可能非常庞大(如果我将其分块,可能需要许多DB请求)=

我的解决方案行吗,还是有更好的?还是CouchDB不适合这样的查询?

干杯!

共有1个答案

申思远
2023-03-14

将权限数据保留在文档本身上是正确的。这将是以后构建视图的最简单方法,它将使您能够检查用户权限。所以不要担心,让它朝那个方向流动。对嵌套这些数据感到不安的可能是以前使用SQL和RDBMS时的数据,在这些数据中,您希望对每个表进行规范化。这一次完全不同:)

顺便说一句,在CouchDB中执行“JOINS”的唯一可能性是使用链接文档。如果您有兴趣,可以试一试。但是,它无法让您在创建视图时查看链接文档的内部。

 类似资料:
  • 我的代码在这里:代码重新发布是因为我想问一个更直接的问题。如何在未经身份验证的用户和经过身份验证的用户之间切换?我的未经验证的文件似乎已缓存,我使用了以下方法: 在我剩下的api代码之前,它仍然不能工作。谢谢你的帮助 注意:我知道它不起作用,因为我在切换配置/凭据提供程序后立即使用lambda进行调用,并且只有授权用户才能调用此方法。 编辑@behrooziAWS答案: API代码: 完整错误:B

  • 我正在学习Azure AD和Office 365,我想知道以下内容是否可行,如果可行,如何进行,因为我对文档的几个方面感到困惑: 假设一家名为Companyya的公司为其组织的用户提供Office 365。这些用户使用其Office 365 Cred使用Exchange/Outlook和Office登录(Office desktop)。 Companyya在内部托管了Active Director

  • 我正在尝试在反应式Spring Boot应用程序中配置Spring Security性,并包括依赖于新的Spring Security版本5.0.0的父项目。RC1: 我将我的Spring WebSecurity配置为使用自定义AuthenticationFilter来检索我的身份验证信息,以及使用我自己的提供者的自定义AuthenticationManager。 配置: ReactiveAuth

  • 我正在研究使用JWT身份验证的Spring Security实现。我不确定如何检查用户角色并在方法级别获得经过身份验证的用户。我在网上看到这个例子: 我需要从JWT令牌中提取用户类型吗?还有其他方法可以实现吗?在我看来,仅使用是不完整的。 看起来这段代码是用来获得用户如果使用会话类型,我得到NPE。你知道对于JWT我如何才能成为用户吗? Github完整来源:https://Github.com/

  • 我有一个Spring rest服务,我想将它用于经过身份验证和未经身份验证的用户。如果用户经过身份验证,我想从获取用户信息。 如果我在如下所示的ouath2配置中使用,那么我可以获得经过身份验证的用户的用户信息,但未经过身份验证的用户会出现401错误。 如果我并通过在中,如下所示,则所有用户都可以调用该服务,但我无法从SecurityContext获取用户信息。 如何配置我的Spring Secu