安全有效的实现两星期内自动登陆功能(三)
关键字: java, cookie
前半部分请见安全有效的实现两星期内自动登陆功能(一)
AutoLogonFilter.java
过滤器程序,可在WEB-INF/web.xml中设置过滤规则,本文对过滤规则不作介绍,此程序主要作用是检查用户在上一次登陆时是否保存了Cookie,如果保存了,就处理Cookie信息,并帮助用户自动登陆
本程序主要调用了CookieUtil.java中的读取与自动登陆方法,即readCookieAndLogon方法
|
package cn.itcast.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 cn.itcast bean.User; import cn.itcast.util.CookieUtil;
public class AutoLogonFilter implements Filter {
public void destroy() { }
//保存cookie时的cookieName,与CookieUtil.java中的设置相同 private final static String cookieDomainName = “cn.itcast”;
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)resp; HttpSession session = request.getSession(true); User user = (User)session.getAttribute("user");
//如果封装的user不为空,说明已经登陆,则继续执行用户的请求.下面的就不处理了 if(user!=null){ chain.doFilter(request,response); return; }
//user为空,说明用户还没有登陆,就尝试得到浏览器传送过来的Cookie Cookie cookies[] = request.getCookies(); String cookieValue = null; if(cookies!=null){ for(int i=0;i if (cookieDomainName.equals(cookies[i].getName())) { cookieValue = cookies[i].getValue(); break; } } }
//如果cookieValue为空,也继续执行用户请求 if(cookieValue==null){ chain.doFilter(request,response); return; }
//cookieValue不为空执行下面的方法,调用CookieUtil.java中的readCookieAndLogon方法 try{ CookieUtil.readCookieAndLogon(cookieValue, request, response, chain); }catch(Exception e){ e.printStackTrace(); } }
public void init(FilterConfig arg0) throws ServletException { } } |
CheckLogonServlet.java
验证用户登陆信息的Servlet,此程序调用了CookieUtil.java中的saveCookie方法
UserDAO.java与DaoImplFactory.java属于持久层相关的程序,这里就不贴出来了,读者可根据自己需要选择不同的持久层框架,在本程序中只要实现查询用户的功能就可以了
完
转载请注明出处,谢谢!
发表评论
- 浏览: 4253 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Googlipse-不错的GWT Ecli ...
呵呵...我又下个designer超爽
-- by lutsao -
Googlipse-不错的GWT Ecli ...
to lutsao: 可能是我没有翻译清楚,我的E文也一般,还是到官网上入门教 ...
-- by lyhapple -
Googlipse-不错的GWT Ecli ...
下了 可是不知咋用。。。
-- by lutsao -
Googlipse-不错的GWT Ecli ...
Googlipse is no more. The code base is n ...
-- by linuxcoffee -
安全有效的实现两星期内自 ...
晕,,我发的时候明明发全了..我重发一次吧...估计是字数限制的原因
-- by lyhapple






评论排行榜