Browse Source

git-svn-id: https://192.168.57.71/svn/lyggkj@95 1a6f6e3a-4066-fe46-b609-79c204482ece

ld_zhoutl 9 years ago
parent
commit
da80979e88
1 changed files with 100 additions and 0 deletions
  1. 100 0
      sso/trunk/src/main/java/com/xt/sso/common/ManagerLoginFilter.java

+ 100 - 0
sso/trunk/src/main/java/com/xt/sso/common/ManagerLoginFilter.java

@@ -0,0 +1,100 @@
+package com.xt.sso.common;
+
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+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 org.apache.commons.lang.StringUtils;
+
+public class ManagerLoginFilter implements Filter 
+{
+	private FilterConfig filterConfig;
+	private String urlfilter;	
+	private String patternUrl;
+	
+	public void destroy()
+	{
+	}
+
+	public void doFilter(ServletRequest request, ServletResponse response,	FilterChain chain) 
+			throws IOException, ServletException 
+	{
+		HttpServletRequest re = (HttpServletRequest) request;
+		String projectName = re.getContextPath();
+		
+		// 如果是直接请求登录页
+		String uri=re.getServletPath();
+		if(StringUtils.isNotBlank(uri)&&StringUtils.isNotBlank(urlfilter)){
+			//boolean isjump=false;
+			for(String u:StringUtils.split(urlfilter,",")){
+				//System.out.println("urlfilter:"+u);
+				if(uri.equals(u)){
+					chain.doFilter(request, response);
+					return;
+				}
+			}
+			
+		}
+		
+		if(StringUtils.isNotBlank(uri)&&StringUtils.isNotBlank(patternUrl)){
+			Pattern p = Pattern.compile(patternUrl);
+			Matcher m = p.matcher(uri);
+			if (m.find()) {
+				chain.doFilter(request, response);
+				return;				
+			}
+		}
+		
+		/*
+		if (re.getServletPath().equals("/login.html")||re.getServletPath().equals("/user/virtualDrive.html")) 
+		{
+			chain.doFilter(request, response);
+			return;
+		}
+		*/
+		if (!re.getServletPath().equals("/login.html")) 
+		{
+			if (re.getSession().getAttribute("username") == null	|| "".equals(re.getSession().getAttribute("isUserManageAppear"))
+					) 
+			{
+				re.getRequestDispatcher(projectName+"/login").forward(request, response);
+				return;
+			}
+			/*else if("0".equals(re.getSession().getAttribute("isUserManageAppear"))){
+				re.getRequestDispatcher(projectName+"/login").forward(request, response);
+				return;
+			}*/
+			else
+			{
+				re.getSession().setAttribute("username",re.getSession().getAttribute("username"));
+				re.getSession().setAttribute("isUserManageAppear",re.getSession().getAttribute("isUserManageAppear"));
+			}
+
+		}
+		chain.doFilter(request, response);
+	}
+
+
+	@Override
+	public void init(FilterConfig filterConfig) throws ServletException {
+		this.filterConfig = filterConfig;
+		urlfilter = filterConfig.getInitParameter("redirectURL");
+		patternUrl = filterConfig.getInitParameter("patternURL");
+		/*
+		dispatcherPage = filterConfig.getInitParameter("dispatcherPage");
+		if(StringUtils.isBlank(dispatcherPage)&&StringUtils.isNotBlank(urlfilter)){
+			//dispatcherPage=urlfilter.toUpperCase();
+			dispatcherPage=StringUtils.capitalize(urlfilter);
+		}
+		*/
+	}
+
+}