Package org.osforce.connect.web.interceptor

Source Code of org.osforce.connect.web.interceptor.RememberMeInterceptor

package org.osforce.connect.web.interceptor;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.SystemUtils;
import org.osforce.connect.entity.system.User;
import org.osforce.connect.service.system.UserService;
import org.osforce.connect.web.AttributeKeys;
import org.osforce.connect.web.route.RouteController;
import org.osforce.spring4me.commons.cipher.CipherUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import org.springframework.web.util.WebUtils;

/**
*
* @author <a href="mailto:haozhonghu@hotmail.com">gavin</a>
* @since 1.1.0
* @create May 30, 2011 - 3:11:34 PM
* <a href="http://www.opensourceforce.org">开源力量</a>
*/
public class RememberMeInterceptor extends HandlerInterceptorAdapter {

  private static final String KEY_FILE = SystemUtils.USER_HOME + "/.connect/key";
 
  private UserService userService;
 
  public RememberMeInterceptor() {
  }
 
  @Autowired
  public void setUserService(UserService userService) {
    this.userService = userService;
  }
 
  @Override
  public boolean preHandle(HttpServletRequest request,
      HttpServletResponse response, Object handler) throws Exception {
    if(handler.getClass().isAssignableFrom(RouteController.class)) {
      resolveRememberMe(request, response);
    }
    return true;
  }
 
  public void resolveRememberMe(HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    if(request.getSession().getAttribute(AttributeKeys.USER_ID_KEY)==null) {
      Cookie cookie = WebUtils.getCookie(request, AttributeKeys.REMEMBER_ME_KEY);
      if(cookie!=null) {
        String username = CipherUtil.decrypt(cookie.getValue(), KEY_FILE);
        User user = userService.getUser(username);
        request.getSession().setAttribute(AttributeKeys.USER_ID_KEY, user.getId());
      }
    }
  }

}
TOP

Related Classes of org.osforce.connect.web.interceptor.RememberMeInterceptor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.