java web 怎么用solr_使用web过滤器增加solr后台登录验证

solr后台自带是没有登录功能的,默认访问地址是:http://localhost:8983/solr/#/(内置jetty运行)。

要给sorl后台增加登录验证方法:

1、使用web服务器的登录验证(例如jetty、tomcat)

这种方式好处是不需要另外写代码,只需配置一下对应的web服务器就行了。

2、使用web过滤器过滤地址验证

这种方法是更加灵活,缺点是需要点代码开发。

本文介绍的是第二种方法:

SolrLoginFilter.java

package com.penngo.solr;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;

public class SolrLoginFilter implements Filter {

public void init(FilterConfig config) throws ServletException {

}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest)request;

HttpServletResponse httpResponse = (HttpServletResponse)response;

HttpSession session = httpRequest.getSession();

String url = httpRequest.getRequestURL().toString();

String userAgent = httpRequest.getHeader("user-agent");

String query = httpRequest.getQueryString();

String servletPath = httpRequest.getServletPath();

String contextPath = httpRequest.getContextPath();

System.out.println("url======="

+ ", url:" + url + ", servletPath:" + servletPath + ", contextPath:" + contextPath + ", query:" + query

+ ", userAgent:" + userAgent);

Object isLogin = session.getAttribute("isLogin");

if(isLogin == null || ((boolean)isLogin) != true) {

String user = StringUtils.isEmpty(request.getParameter("user")) == false ? request.getParameter("user") : "";

String password = StringUtils.isEmpty(request.getParameter("password")) == false ? request.getParameter("password") : "";

if(user.equals("admin") == true && password.equals("123") == true) {

session.setAttribute("isLogin", true);

httpResponse.sendRedirect(contextPath);

return;

}

else {

httpRequest.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.println(loginPage());

out.close();

return;

}

}

chain.doFilter(request, response);

}

public void destroy() {

}

private String loginPage() {

String page = "\n"

+ "\n"

+ "

\n"

+ "

\n"

+ "用户名:\n"

+ "密 &nbsp码:\n"

+ "登录 \n"

+ "

\n"

+ "

+ "";

return page;

}

}

在原来的web.xml中增加过滤器配置

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

version="2.5"

metadata-complete="true"

>

SolrLoginFilter

com.penngo.solr.SolrLoginFilter

SolrLoginFilter

/

SolrRequestFilter

org.apache.solr.servlet.SolrDispatchFilter

excludePatterns

/partials/.+,/libs/.+,/css/.+,/js/.+,/img/.+,/templates/.+

SolrRequestFilter

/*

LoadAdminUI

org.apache.solr.servlet.LoadAdminUiServlet

SolrRestApi

org.restlet.ext.servlet.ServerServlet

org.restlet.application

org.apache.solr.rest.SolrSchemaRestApi

LoadAdminUI

/index.html

SolrRestApi

/schema/*

.xsl

application/xslt+xml

index.html

Disable TRACE

/

TRACE

Enable everything but TRACE

/

TRACE

运行结果:

63120f8a8b9917423d3bd881821c3873.png

036add70dad52398a5f43f4c910fd439.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值