/**
 * 版权所有 ©2019 莱欧软件有限公司
 * 工程名：SpringMvcLion
 * 文件名：ReqFilter.java
 * 创建日期：2019年2月27日 上午10:48:39
 * 作者：dlm
 */
package com.lion.filter;

import java.io.IOException;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lion.config.LoginUserInfoCache;

import jodd.util.StringUtil;

/**
 * 类描述  过滤器
 * @author dlm
 * @since 2019年2月27日
 */
@WebFilter(filterName="filter",urlPatterns="*.service")
public class ReqFilter implements Filter{
	//private JdbcTemplate jdbc;
	/**
	 * 方法描述
	 * @author dlm
	 * @since 2019年2月27日
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * 方法描述
	 * @author dlm
	 * @since 2019年2月27日
	 * @param arg0
	 * @param arg1
	 * @param arg2
	 * @throws IOException
	 * @throws ServletException
	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
	 */
	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest request=(HttpServletRequest) arg0;
		HttpServletResponse response=(HttpServletResponse) arg1;
		response.addHeader("Content-Security-Policy","object-src 'self'");
		String url=request.getRequestURI();
		if(url!=null){//先简单验证
			String token=request.getHeader("token");
			int status=0;
			if(StringUtil.isNotEmpty(token)){
				if(LoginUserInfoCache.getLoginUserInfoByToken(token)==null){
					status=0;
				}else{
					status=1;
				}
			}
			if(status==0){
				response.setHeader("sessionstatus", "timeout");
				return;
			}
		}
	   arg2.doFilter(new XSSRequestWrapper(request), arg1);
       return;
	}

	/**
	 * 方法描述
	 * @author dlm
	 * @since 2019年2月27日
	 * @param arg0
	 * @throws ServletException
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig arg0) throws ServletException {
		//jdbc=Util.jdbc();
	}

}
