package com.slcf.filter; 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.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.oned.Code128Writer; import com.slcf.pojo.UserBean; import com.google.zxing.BarcodeFormat; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.oned.Code128Writer; /** * 登录验证的过滤器 servlet3.0新特性(注解) */ @WebFilter("/*") public class LoginFilter implements Filter { // private FilterConfig config; // private String allowOrigin="*"; /** * Default constructor. */ public LoginFilter() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // if(1==1) { // chain.doFilter(request, response); // return; // } // 获取HttpServletRequest HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse rep = (HttpServletResponse)response; ////////////////////////////////////////////////////////// // if("*".equals(allowOrigin)) { // rep.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin")); // } rep.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin")); rep.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Origin,content-type,token,id,x-requested-with,Authorization"); // rep.setHeader("Access-Control-Allow-Methods","*"); // rep.setHeader("Access-Control-Request-Headers","Origin, X-Requested-With, content-Type, Accept, Authorization"); // rep.addHeader("Access-Control-Allow-Origin",req.getHeader("Origin")); //// httpServletResponse.addHeader("Access-Control-Allow-Methods","post,put, get ,delete, options"); // rep.addHeader("Access-Control-Allow-Credentials","true"); // rep.setHeader("Access-Control-Allow-Methods", req.getHeader("Access-Control-Allow-Methods")); //// rep.setHeader("Access-Control-Max-Age", "3600"); // rep.setHeader("Access-Control-Allow-Headers", req.getHeader("Access-Control-Allow-Headers")); // rep.setHeader("Content-Type", req.getHeader("application/json")); // if("OPTIONS".equalsIgnoreCase(req.getMethod())){ // //服务器成功处理了请求,但没有返回任何内容。 // rep.setStatus(204); // return; // } ////////////////////////////////////////////// // 获取session HttpSession session = req.getSession(); // 获取当前登录用户信息 UserBean userBean = (UserBean)session.getAttribute("currentUser"); // 获取请求URL信息 String url = req.getRequestURI(); // String suffix = url.substring(url.lastIndexOf('.')); //不需要过滤的url // String[] urls = {"/login","/json",".js",".css",".ico",".jpg",".png",".gif",".bmp"}; String[] urls = {"/login","/json","/asrsApi","/apiLogin","/css","/jsFiles","/static","/images",".png",".gif",".jpg",".bmp"}; boolean flag = false; // flag = Arrays.asList(urls).contains(suffix); for (String str : urls) { if (url.indexOf(str) != -1) { flag =true; break; } } String sessionId = request.getParameter("uid"); if(sessionId!=null && !sessionId.equals("")){ MySessionContext myContext = MySessionContext.getInstance(); HttpSession session1 = myContext.getSession(sessionId); if(session1!=null) { userBean = (UserBean)session1.getAttribute("currentUser"); } } if(flag==true) { chain.doFilter(request, response); return; } if (url.contains("login.jsp") || url.contains("doLogin.action")) { // 转发到下一个过滤器或Servlet(表示正常运行) chain.doFilter(request, response); } else if (userBean != null) { // 转发到下一个过滤器或Servlet(表示正常运行) chain.doFilter(request, response); } else { // rep.sendRedirect(req.getContextPath()+ "/login.jsp"); // req.getRequestDispatcher(req.getContextPath()+"/login.jsp").forward(req, // response); if(url.contains("phone")) { // Map map = new HashMap(); // map.put("code", -1); // map.put("msg", "Sessionout"); PrintWriter out = response.getWriter(); // out.println(map.toString()); out.print("Sessionout"); return; } else { String loginUrl = req.getContextPath()+ "/login.jsp"; PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println(""); return; } } } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub // this.config = config; // allowOrigin=this.config.getInitParameter("allowOrigin"); // LOG.debug("httpServletResponse.addHeader(\"Access-Control-Allow-Origin\","+allowOrigin+");"); } }