【问题标题】:Solr authentication (using Django Haystack)Solr 身份验证(使用 Django Haystack)
【发布时间】:2023-03-19 20:03:01
【问题描述】:

我的 solr 服务无需 HTTP 身份验证即可工作,但我的虚拟主机提供了它,我想利用它。

dotcloud 以 url 的形式为我提供了访问我的 solr 服务的用户名和密码:

'http://dotcloud:XXXXXXXXXXXXXXXXXXXXX@gigsmash-teamfoobar.dotcloud.com/solr/'

当我将浏览器指向这个地址时,它工作得很好。

在我的 settings.py 文件中,我有以下行:

    HAYSTACK_SOLR_URL = 'http://dotcloud:XXXXXXXXXXXXXXXXXXX@gigsmash-teamfoobar.dotcloud.com/solr/' 

但是当我运行 ./manage.py build_solr_schema 时,我收到以下错误:

ValueError: int() 以 10 为底的无效文字:'XXXXXXXXXXXXXXXXXX@gigsmash-teamfoobar.dotcloud.com'

如果我删除 URL,我在构建架构时没有任何问题,但是我无法构建索引(“错误 401:未授权”),这当然是有意义的。

我在 haystack 文档中找不到任何关于身份验证的内容。这似乎可以通过 settings.py 中的额外几行来解决,例如:

    HAYSTACK_SOLR_USER = 'dotcloud'
    HAYSTACK_SOLR_PSSWD = 'XXXXXXXXXXXXXXXXXXX'

但是,没有骰子。 Haystack 设置的完整列表没有显示任何类似的内容:http://docs.haystacksearch.org/dev/settings.html

有什么想法吗??

谢谢。

【问题讨论】:

    标签: solr django-haystack dotcloud


    【解决方案1】:

    我在 dotcloud 上遇到了同样的问题。错误实际上不在 Haystack 中——它在 pysolr 中。 Pysolr 假设如果 url 中有冒号,那么它后面的所有内容都必须是端口号。

    一个短期解决方法是在您的 dotcloud solr 服务上使用以下配置来禁用身份验证:

    配置: solr_authentication: false

    我只会在开发环境中执行此操作,并且如果您那里有不敏感的数据(因为任何人都可以访问该网址)。最终的解决方案是修补pysolr。

    【讨论】:

    • 如何“修补 pysolr”?我什至不知道那是什么意思:-/
    • pysolr 项目托管在这里:github.com/toastdriven/pysolr。您可以通过 github 提交功能/错误请求,也可以下载源代码,修改处理连接到 solr 的行,并替换部署中的版本。能够使用用户名和密码处理 solr url 将非常有用,因此我建议提交功能请求。
    • 谢谢@Borys。我提出了一个功能请求,因为我太新手了,不知道从哪里开始!如果有任何问题会在这里发帖。
    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2011-09-23
    • 2013-09-09
    相关资源
    最近更新 更多