solrj如何链接加权限的solr服务器

搭建solr服务器如果不加登录权限,总是不安全的,所以就加了权限,加权限其实很简单,拿我的举例,如下:
环境是:jdk1.8,tomcat9,solr7(solr服务器已搭建成功,只演示加权限)
1.进入到你的solr服务器的conf文件夹内:

    [root@Tomcat02 /]# cd /usr/local/tomcat9/conf/

2.打开tomcat-users.xml文件:

    [root@Tomcat02 conf]# vi tomcat-users.xml 

3.如果有这一段,请注掉:

    <!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>

    -->

4.在最后加上这一段,注意必须是在</tomcat-users>标签里,username是你的用户名,password是你的密码,roles是你的角色与rolename一致:

    <role rolename="solr"/>

    <user username="×××" password="×××" roles="solr"/>

5.保存之后进入到你的solr项目的WEB-INF文件夹里:

    [root@Tomcat02 conf]# cd /usr/local/tomcat9/webapps/solr7/WEB-INF/

6.打开web.xml文件:

    [root@Tomcat02 WEB-INF]# vi web.xml 

7.看最后有没有以下内容,如果有请注掉:

    <!--  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>

  </security-constraint> -->

8.在最后添加以下内容,注意,内容必须在</web-app>标签内:

    <security-constraint>
      <web-resource-collection>
          <web-resource-name>solr</web-resource-name>
          <url-pattern>/</url-pattern>
          <http-method>GET</http-method>
          <http-method>POST</http-method>
        <http-method>DELETE</http-method>
        <http-method>PUT</http-method>
      </web-resource-collection>
      <auth-constraint>
          <description>This applies only to the "tomcat" security role</description>
          <role-name>solr</role-name>
          <role-name>zhhhxrsolrce36</role-name>
      </auth-constraint>
      <user-data-constraint>
          <transport-guarantee>NONE</transport-guarantee>
      </user-data-constraint>
  </security-constraint>


  <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>solr</realm-name>

  </login-config>

9.权限添加完成,可以测试一下,重启solr服务器,如果出现身份验证框,恭喜,权限添加成功,如下。
以上是solr添加权限的步骤,下面是solrj添加用户名及密码链接solr服务器,因为solr服务器如果添加了权限,不论是浏览器访问domin还是solrj访问都需要登录名和登录密码。
10.我在应用solr客户端的时候是创建了一个工具类,供参考,具体设置链接参数如下代码:
public class SolrUtil {
	private static HttpClient createClient;
	static{
		ModifiableSolrParams invariantParams = new ModifiableSolrParams();
	      invariantParams.set(HttpClientUtil.PROP_FOLLOW_REDIRECTS, false); //遵循重定向 
	      invariantParams.set(HttpClientUtil.PROP_BASIC_AUTH_USER, (string类型用户名)); //基本认证用户名 
	      invariantParams.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, (string类型密码);//基本认证密码  
	      invariantParams.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 1000);//最大允许总连接  
	      invariantParams.set(HttpClientUtil.PROP_ALLOW_COMPRESSION, true);//如果服务器支持的话,允许压缩  
	      invariantParams.set(HttpClientUtil.PROP_MAX_CONNECTIONS_PER_HOST, 1000);//每个主机允许的最大连接    
		createClient = HttpClientUtil.createClient(invariantParams);  
	}
   private static HttpSolrClient client = new HttpSolrClient("http://ip:8089/solr7/coll",createClient);
/**
   * 根据关键字分页查询
   * @param goodsName
   * @param page
   * @param pageSize
 * @param client 
   * @return
   */
   public static List<JdProduct>  getProductByKeyword(String goodsName,int page,int pageSize,String filed){
	   // 从solr 中分页查询
		 List<JdProduct> list = new ArrayList<JdProduct>(pageSize); 
			try {
				 SolrQuery solrQuery = new SolrQuery();
				 solrQuery.setStart((page-1)*pageSize); 
				 solrQuery.setRows(pageSize);
				 solrQuery.setParam("group", false);
//                 solrQuery.add("q", filed+":"+goodsName);
//				 solrQuery.addSort("product_update_time",SolrQuery.ORDER.desc);
				 solrQuery.add("q","product_goods_name:"+goodsName+"^2"+" OR (product_goods_name:"+goodsName+" AND product_category_name:"+goodsName+")^1.5");
				 QueryResponse query =client.query(solrQuery);
				 SolrDocumentList solrDocumentList = query.getResults();  
				//取商品列表,自己封装的一个方法entityList
				list = SolrUtil.entityList(solrDocumentList, pageSize);
			} catch (SolrServerException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			 return list;
   }
以上就是就是solr的权限添加以及solrj设置链接参数的建议,如有更好的建议或意见,望留言交流。如有问题,请留言,看到会回复。email:[email protected]


    

猜你喜欢

转载自blog.csdn.net/tomcat_zhu/article/details/79396297
今日推荐