Servlet拦截器(一般用于用户验证是否登录)

package com.intralinks.imgview.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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import com.intralinks.client.Field;
import com.intralinks.client.FieldDefinition;
import com.intralinks.client.Folder;
import com.intralinks.client.Session;
import com.intralinks.config.Config;
import com.intralinks.controllers.Controller_Documents;
import com.intralinks.controllers.Controller_Workspaces;
import com.intralinks.exceptions.ILGenericException;
import com.intralinks.imgview.utils.AllKeys;
import com.intralinks.imgview.utils.Helpers;
import com.intralinks.imgview.utils.Setting;
import com.intralinks.logger.ILLogger;
import com.intralinks.util.CheckKey;
@WebFilter("/servlet/*")
public class InitProperty implements Filter
{
 @Override
 public void destroy()
 {
 }
 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
 {
  HttpServletRequest _request = (HttpServletRequest) request;
  HttpServletResponse _response = (HttpServletResponse) response;
  JSONObject json = new JSONObject();
  String projectName = Config.getValue("appName");
  boolean isTrueOrFlase = false;
  try
  {
   isTrueOrFlase = CheckKey.checkKey(projectName, Config.getValue("KeyCode"));
  }
  catch (Exception e1)
  {
   ILLogger.logger.error(e1);
  }
  if (isTrueOrFlase == false)
  {
   _response.setContentType("application/json");
   json.put("state", "403");
   json.put("message", "Your License KEY is expired or invalid. ");
   _response.getWriter().write(json.toString());
   return;
  }
  final Session session = Helpers.getSession(_request);
  if ("/servlet/logon".equalsIgnoreCase(_request.getServletPath()) == false && "/servlet/workspace/enter".equalsIgnoreCase(_request.getServletPath()) == false)
  {
   if (com.intralinks.util.Helpers.isNullOrEmpty(session.getSsoGlobalSessionId()) == false)
   {
    // ssoGlobalSession is not empty
    Cookie[] cookies = _request.getCookies();
    boolean found = false;
    for (Cookie c : cookies)
    {
     if (AllKeys.IsAlive.equals(c.getName())) found = true;
    }
    if (found == false)
    {
     _response.setContentType("application/json");
     json.put("state", "400");
     json.put("message", "Your session is timeout.");
     _response.getWriter().write(json.toString());
     return;
    }
    if ("".equals(Setting.IMAGES_FOLDER_ID))
    {
     ILLogger.logger.debug("Init Setting static key value");
     try
     {
      Folder[] folders = Controller_Workspaces.getRootLevelFolders(Setting.WORKSPACE_ID, session);
      if (folders != null)
      {
       for (Folder f : folders)
       {
        if ("Images".equalsIgnoreCase(f.getName()))
        {
         Setting.IMAGES_FOLDER_ID = f.getId();
         break;
        }
       }
      }
     }
     catch (ILGenericException e)
     {
     }
    }
    if (Setting.THUMB_FIELD == null)
    {
     try
     {
      FieldDefinition[] fds = Controller_Documents.getFieldDefinitions(Setting.WORKSPACE_ID, false, session);
      for (FieldDefinition f : fds)
      {
       if (f.getLabel().equalsIgnoreCase(AllKeys.ISTHUMB))
       {
        Setting.THUMB_FIELD = new Field(f.getSearchFieldName(), new String[] { "True" });
       }
       if (f.getLabel().equalsIgnoreCase(AllKeys.REJECTED))
       {
        Setting.RejectedId = f.getFieldId();
       }
      }
     }
     catch (ILGenericException e)
     {
      ILLogger.logger.error(e);
     }
    }
    Cookie c = new Cookie(AllKeys.IsAlive, "1");
    c.setPath(_request.getContextPath() + "/");
    c.setMaxAge(31 * 60);
    // c.setHttpOnly(true);
    _response.addCookie(c);
   }
   else
   {
    // session is is empty
    Cookie c = new Cookie(AllKeys.IsAlive, "0");
    c.setPath(_request.getContextPath() + "/");
    c.setMaxAge(0);
    // c.setHttpOnly(true);
    json.put("state", "400");
    json.put("message", "Your session is timeout.");
    _response.setContentType("application/json");
    _response.getWriter().write(json.toString());
    return;
   }
  }
  chain.doFilter(_request, _response);
 }
 @Override
 public void init(FilterConfig config) throws ServletException
 {
 }
}

你可能感兴趣的:(Servlet拦截器(一般用于用户验证是否登录))