首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MONGO_QUERY_BLACKLIST不起作用

MONGO_QUERY_BLACKLIST不起作用
EN

Stack Overflow用户
提问于 2017-04-01 18:28:30
回答 2查看 255关注 0票数 1

我使用python的默认设置

代码语言:javascript
复制
'MONGO_QUERY_BLACKLIST': ['$where', '$regex']

但是,在对Eve的查询中,我仍然可以使用‘where’参数。

代码语言:javascript
复制
import requests

params = {'where': '{"username":"Alex"}'}
response = requests.get('http://localhost/users', params)
print response.content
print response.status_code

{"_items":{“用户名”:"Alex",. } 200

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-02 07:53:31

您正在将Eve的REST参数称为where (它将给定的参数转换为标准MongoDB find()查询的查询条件)与MongoDB的 JavaScript操作符(在Eve中默认情况下强烈禁止和禁用该操作符)。

不幸的是,这是Eve API中一个令人困惑的命名选择。$where操作符(如果使用)将是提供给Eve的where的查询条件的一部分。

修改示例params以使用$where查询(仅用于说明目的,因为这绝对不是推荐的或可执行的):

代码语言:javascript
复制
params = {'where': '{"$where":"this.username == \'Alex\'"}'}

使用Eve的默认设置(或$where包含在MONGO_QUERY_BLACKLIST中),Eve API将返回类似于以下内容的响应:

{"_status":"ERR","_error":{“消息”:“浏览器(或代理)发送了服务器无法理解的请求。”,“代码”:400}

从黑名单中删除$where将返回匹配的_items。我用Eve 0.7.2对此进行了测试,以确定预期的行为。

票数 3
EN

Stack Overflow用户

发布于 2017-04-02 10:34:07

@Stennie是正确的,QUERY_MONGO_BLACKLIST引用的是实际的查询参数,而不是查找关键字本身。但是,如果您想完全禁用筛选,只需设置ALLOWED_FILTERS = []

此外,如果不希望使用QUERY_WHERE,则可以使用where来选择另一个关键字。

代码语言:javascript
复制
# disable filters
ALLOWED_FILTERS = []
# replace the default 'where' with 'find'
QUERY_WHERE = 'find'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43160504

复制
相关文章

相似问题

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