马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

jsp实现自动登录

[复制链接]
查看3197 | 回复1 | 2015-11-9 17:33:16 | 显示全部楼层 |阅读模式
<input type="checkbox" name="autologin">两周内自动登录
代码:

Cookie ckUsername, ckSessionid;
if (autologin.equals("on")) {
   // 如果用户选择了“两周内自动登录”,则向用户发送两个cookie。
   // 一个cookie记录用户名,另一个记录唯一的验证码,
   // 并将此验证码写入数据库,以备用户返回时查询。(防止伪造cookie)
   ckUsername = new Cookie("autoLoginUser", user.getUsername()); // user是代表用户的bean
   ckUsername.setMaxAge(60 * 60 * 24 * 14);   //设置Cookie有效期为14天
   res.addCookie(ckUsername);
   sessionid = session.getId(); // 取得当前的session id
   ckSessionid = new Cookie("sessionid", sessionid);
   ckSessionid.setMaxAge(60 * 60 * 24 * 14);
   res.addCookie(ckSessionid);
   // 在数据库中插入相应记录
   userSessionDAO.insertUserSession(user, sessionid);
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
   HttpServletRequest request = (HttpServletRequest) req;
   HttpSession session = request.getSession(true);
   String username;
   String sessionid;   // 此sessionid是上次用户登录时保存于用户端的识别码,用于用户后续访问的自动登录。不是本次访问的session id。
   Cookie[] cookies;
   CookieManager cm = new CookieManager(); // CookieManager是一个自定义的类,用于从Cookie数组中查找并返回指定名称的Cookie值。
   boolean isAutoLogin;
   // 如果session中没有user对象,则创建一个。
   User user = (User) session.getAttribute("user");
   if (user == null) {
    user = new User(); // 此时user中的username属性为"",表示用户未登录。
   }
   // 如果user对象的username为"",表示用户未登录。则执行自动登录过程。
   // 否则不自动登录。
   if (user.getUsername().equals("")) {
    // 检查用户浏览器是否发送了上次登录的用户名和sessionid,
    // 如果是,则为用户自动登陆。
    cookies = request.getCookies();
    username = cm.getCookieValue(cookies, "autoLoginUser");
    sessionid = cm.getCookieValue(cookies, "sessionid");
    isAutoLogin = userSessionDAO.getAutoLoginState(username, sessionid); // 如果在数据库中找到了相应记录,则说明可以自动登录。
    if (isAutoLogin) {
     user.setUsername(username);
     user.setNickname(DBUtil.getNickName(username));
     session.setAttribute("user", user); // 将user bean添加到session中。
    }
   }
   chain.doFilter(req, resp);
}


ibcadmin | 2015-11-10 10:42:00 | 显示全部楼层




.............
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则