如何将结果限制为属于指定用户的json文档

时间:2016-08-06 08:34:15

标签: restheart

我正在考虑开始使用RestHeart,但是在浏览以下问题时我没有找到满意的答案:

在集合中,有一个属性命名doc的所有者(用户的_id)。给定经过身份验证的用户,如何将结果限制为仅属于该用户的文档,即使用户尝试通过更改userId来篡改REST查询?

AFAIU的解决方案是使用自定义的AccessManager类。所以,我的后续问题是;如果有人已经实现了这样的东西,并想分享代码?

1 个答案:

答案 0 :(得分:1)

自定义AccessManager可以工作,但默认的SimpleAccessManager也可以通过检查filter查询参数来实现。

想法是让客户请求:

GET /db/coll?filter={'userid': <the userid>}

SimpleAccessManager现在可以检查过滤条件,以实际使用带有以下谓词的经过身份验证的用户标识:

- role: ROLE
  predicate: path-template[value="/db/coll"] and equals[%{q,filter},"{'userid':'%u'}"] and method[value="GET"]

技巧由以下equals谓词完成,该谓词检查过滤器查询参数是否等于字符串{'userid': <authenticated_user_id>}

equals[%{q,filter},"{'userid':'%u'}"]