4

좋아, 그래서 솔라와 별도의 서버를 가지고 있으며, 이것은 응용 프로그램과 완벽하게 연결됩니다.권한이있는 tomcat/solr 서버에 sunspot으로 레일 응용 프로그램을 연결하십시오.

production: 
    solr: 
    hostname: domain 
    port: 8080 
    log_level: WARNING 
    path: path/to/data 

문제는 내 바람둥이 응용 프로그램에 대한 권한을 원이다 : 우리가 뭔가를 가지고있는 보통의 sunspot.yml 사용. 도메인과 포트를 아는 한 solr/admin을 방문하여 방문 할 수 있습니다. 그래서 내 톰캣의 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/관리자에게 사용자 이름과 암호를 방문하는 사람을 필요로한다. 문제는 내 레일 앱에이 문제를 어떻게 알리는 것입니까? 이 작업을 수행 한 후 내 레일 앱이 solr 서버에 액세스하려고하면 "Unauthorized"응답이 예상됩니다. 아마도 sunspot.yml 파일에 들어갈 것입니다. 그러나 무엇을 추가해야합니까?

답변

7

Sunspot 구성이 YAML을 통해 기본 인증 사용자 이름과 암호를 지원하는지 잘 모르겠습니다. 이 옵션들은 모두 연결되어 Sunspot.config.solr.url에 할당되고 나중에 RSolr에 할당됩니다. 간단합니다. 즉, https://github.com/outoftime/sunspot의 요청을 받아 들여서 해결할 수 있습니다.

Sunspot.config.solr.url을 이니셜 라이저에 직접 지정하거나 환경 변수를 통해 URL을 지정하는 것이 좋습니다. Sunspot은 SOLR_URLWEBSOLR_URL 환경 변수를 지원하므로 기본 인증 사용자 이름과 암호를 보존해야합니다.

개발 환경에서이를 테스트하려면 :

rake sunspot:reindex SOLR_URL=http://admin:[email protected]:8983/solr 
rails server SOLR_URL=http://admin:[email protected]:8983/solr 
1

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

보석이를 설치합니다. sunspot_rails에 대한 HTTP 기본 인증 지원. 그런 다음 생성 된 sunspot.yml에 사용자 이름과 암호를 넣을 수 있습니다.

+0

유망 해 보입니다. 나는 아직 이것을 시험해 볼 시간이 없지만 시간이있을 때 이것을 확실히 고려할 것이다. –

관련 문제