日期:2014-05-19 浏览次数:20687 次
package com.hydom.util; public final class CommonConstants { // 系统 session 用户 public final static String SESSION_USER = "session_user"; /** 保存在浏览器中cookie的邮箱名称名 */ public final static String BROWSER_COOKIE_EMAIL = "HKPhotoUserEmail"; /** 保存在浏览器中cookie的邮箱密码名 */ public final static String BROWSER_COOKIE_PASSWORD = "HKPhotoUserPassword"; /** 保存在浏览器中cookie的最大时间15天 */ public final static int BROWSER_COOKIE_MAX_AGE = 15*24*60*60; /** 保存在浏览器中cookie的自动登录状态名 */ public final static String BROWSER_COOKIE_AUTO_STATUS_NAME = "HKPhotoAutoLoginStatus"; /** 保存在浏览器中cookie的退出登录名 */ public final static String BROWSER_COOKIE_LOGIN_OUT_NAME = "HKPhotoLoginOut"; }
package com.hydom.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.hydom.entity.User; import com.hydom.service.IUserService; import com.hydom.util.CommonConstants; import com.hydom.util.pico.PicoContainer; /** *功能:首先检测session中是否有user,如果没有再检测cookie中是否有对应的邮箱和密码<BR> * 如果有那么就查出该user放进session中<BR> * 如果都没有那么就doFilter()<BR> * * @author ocaicai@yeah.net<BR> * @date 2011-9-22<BR> * @version 1.0 <BR> * */ public class CookieLoginFilter extends BaseFilter { // 获取数据层示例 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; Object object = request.getSession().getAttribute( CommonConstants.SESSION_USER); User cookieUser = null; String email = null; String password = null; String autoStatus = null; if (object == null) { Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { // System.out.println("cookies.length=" + cookies.length); for (int i = 0; i < cookies.length; i++) { Cookie cookie = cookies[i]; // 判断Cookie的邮箱名是否等于"HKPhotoUserEmail" if (CommonConstants.BROWSER_COOKIE_EMAIL.equals(cookie .getName())) { email = cookie.getValue().trim(); } // 判断Cookie的密码名是否等于"HKPhotoUserPassword" if (CommonConstants.BROWSER_COOKIE_PASSWORD.equals(cookie .getName())) { password = cookie.getValue().trim(); } // 判断Cookie的自动登录状态名是否等于"HKPhotoAutoLoginStatus" if (CommonConstants.BROWSER_COOKIE_AUTO_STATUS_NAME .equals(cookie.getName())) { autoStatus = cookie.getValue().trim(); } } if (autoStatus!=null&&autoStatus.equals("1")) { if (email != null && password != null && email.length() > 0 && password.length() > 0) { cookieUser = new User(); cookieUser.setEmail(email); cookieUser.setPassword(password); // System.out.println("email=" + cookieUser.getEmail()); // System.out.println("password=" // + cookieUser.getPassword()); IUserService userService = PicoContainer.PICO .getComponent(IUserService.class); cookieUser = userService.validLogin(cookieUser); if (cookieUser != null) { // 将该user放入到session中 request.getSession().setAttribute( CommonConstants.SESSION_USER, cookieUser); } else {