4

さて、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 アプリにどのように伝えるかです。これを行った後、レールアプリがsolrサーバーにアクセスしようとすると、予想される「無許可」の応答が返されます。おそらくsunspot.ymlファイルに入ると思いますが、何を追加する必要がありますか?

4

2 に答える 2

7

Sunspot 構成が YAML 経由で Basic Auth ユーザー名とパスワードをサポートしているかどうかはわかりません。これらのオプションはすべて連結されて、RSolr に割り当てられSunspot.config.solr.url、後で RSolr に渡されます。これは単純な見落としです。https://github.com/outoftime/sunspotでプル リクエストを送信して修正してください。

Sunspot.config.solr.urlイニシャライザで直接割り当てるか、環境変数を介して URL を指定することで、うまくいくでしょう。Sunspot はSOLR_URLおよびWEBSOLR_URL環境変数をサポートしているため、基本認証のユーザー名とパスワードを保持する必要があります。

開発環境でこれをテストするには:

rake sunspot:reindex SOLR_URL=http://admin:foobar@localhost:8983/solr
rails server SOLR_URL=http://admin:foobar@localhost:8983/solr
于 2011-04-08T17:11:59.267 に答える
1

https://github.com/justinko/sunspot-rails-http-basic-auth

これをgemインストールします。sunspot_rails の HTTP 基本認証サポート。その後、生成された sunspot.yml にユーザー名とパスワードを入れることができます。

于 2011-07-21T06:18:03.083 に答える