web统一登录验证

/**
 * Servlet Filter implementation class LoginFileter
 */
public class LoginFileter implements Filter {
	private List<String> uriLists = new ArrayList<>();
	public void init(FilterConfig fConfig) throws ServletException {
		System.out.println("过滤器启动");
		String noUri = fConfig.getInitParameter("noUri");  //从web.xml读取配置
		String[] uriArrays = noUri.split(";"); 
		for(String uri: uriArrays){
			uriLists.add(uri);
		}
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("过滤器执行");
		HttpServletRequest servletrequest = (HttpServletRequest) request;
		HttpServletResponse ServletResponse = (HttpServletResponse) response;
		HttpSession session = servletrequest.getSession();
		String uri = servletrequest.getRequestURI(); //获取地址
		System.out.println(uri);
		//不需要登录验证处理
				if(passLoginValidate(uri) == true){
					chain.doFilter(request, response); //直接放行
					return;
				}
		String user = (String) session.getAttribute("username"); // 获取用户名密码
		if (user == null || user.equals("")) { // 如果没有登录就跳转到登录界面
			System.out.println("未登录账号");
			ServletResponse.sendRedirect("/IntegralManager_v1.0/jsp/login.jsp");
		} else {
			System.out.println("登录");
			chain.doFilter(request, response);
		}
	}
	public void destroy() {
		System.out.println("过滤器销毁");
	}


	/**
	 * 请求uri是否需要登录验证
	 * @return false:需要验证 true:不需要验证
	 */
	public boolean passLoginValidate(String uri) {
		boolean isPass = false;
		int index = uri.indexOf("?");
		if (index != -1) {
			uri = uri.substring(0, index);
		}
		for (String u : uriLists) {  
			if (uri.endsWith(u)) {//不需要登录验证的网页
				isPass = true;     
				break;
			}
		}
		return isPass;
	}

}

XML配置文件

  <filter>
    <filter-name>AuthenFilter</filter-name>
    <filter-class>com.hst.integraimanager.filter.LoginFileter</filter-class>
    <init-param>
      <param-name>noUri</param-name>
      <param-value>login.jsp;registered.jsp;jpg;gif;css;js;servlet;do</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>AuthenFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值