|
@@ -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);
|
|
|
+ }
|
|
|
+ */
|
|
|
+ }
|
|
|
+
|
|
|
+}
|