[英]Connecting a rails application with sunspot to a tomcat/solr server with authorization
好的,所以我有一個單獨的服務器與solr,這與應用程序完全正常。 使用通常的sunspot.yml我們有類似的東西:
production:
solr:
hostname: domain
port: 8080
log_level: WARNING
path: path/to/data
問題是我想授權我的tomcat應用程序。 看來只要你知道域名和端口就可以去訪問solr / admin。 所以在我的tomcat web.xml中我添加了:
<security-constraint>
<web-resource-collection>
<web-resource-name>
Solr authenticated application
</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>role</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>REALM</realm-name>
</login-config>
<security-role>
<description>ROLE NAME</description>
<role-name>role</role-name>
</security-role>
這將要求任何人在被授予訪問權限之前訪問solr / admin用戶名和密碼。 問題是如何告訴我的rails應用程序? 執行此操作后,當我的rails應用程序嘗試訪問solr服務器時,我得到了預期的“未授權”響應。 我知道它可能會進入sunspot.yml文件,但我需要添加什么?
我不確定Sunspot配置是否通過YAML支持Basic Auth用戶名和密碼。 這些選項都連接在一起,分配給Sunspot.config.solr.url
,然后提供給RSolr。 這是一個簡單的疏忽 - 歡迎來自https://github.com/outoftime/sunspot的拉取請求來解決這個問題。
您可以更好地在初始化Sunspot.config.solr.url
直接分配Sunspot.config.solr.url
,或者通過環境變量指定URL。 Sunspot支持SOLR_URL
和WEBSOLR_URL
環境變量,這樣做應保留Basic Auth用戶名和密碼。
要在開發環境中測試它:
rake sunspot:reindex SOLR_URL=http://admin:foobar@localhost:8983/solr
rails server SOLR_URL=http://admin:foobar@localhost:8983/solr
https://github.com/justinko/sunspot-rails-http-basic-auth
寶石安裝這個。 它對sunspot_rails的HTTP基本身份驗證支持。 然后,您可以將用戶名和密碼放在生成的sunspot.yml中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.