package com.yigli.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.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.yingli.dao.EmpDao;
import com.yingli.daoImpl.EmpDaoImpl;
import com.yingli.entity.Emp;
/**
* Servlet Filter implementation class AutoLogin
*/
public class AutoLogin implements Filter {
/**
* Default constructor.
*/
public AutoLogin() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse) response;
//1 取出cookie
HttpSession session = req.getSession();
Emp emp=(Emp) session.getAttribute("user");
if(emp==null){
String path=req.getRequestURL().toString();
if(!path.contains("/login")){
Cookie [] cookies=req.getCookies();
Cookie cookie=null;
for(int i=0;cookies!=null&&i<cookies.length;i++){
if("empCookie".equals(cookies[i].getName())){
cookie=cookies[i];
break;
}
}
if(cookie!=null){
// 2 验证数据库
String [] vs=cookie.getValue().split("-");
EmpDao ed=new EmpDaoImpl();
emp=ed.login(vs[0], vs[1]);
// 保存session
if(emp!=null){
req.getSession().setAttribute("user",emp);
}
}
}
}
chain.doFilter(request, response);
}
}
自动登入
自动登录过滤器实现
最新推荐文章于 2024-11-30 11:00:00 发布
本文介绍了一种自动登录功能的实现方式,通过自定义Servlet过滤器检查用户的Cookie信息,并自动进行登录验证,若验证成功则将用户信息保存到Session中。
2016

被折叠的 条评论
为什么被折叠?



