发新话题
移动帖子 加入精华 加入置顶 加入收藏 关注此帖

JAVA通过Session和Cookie实现网站自动登录的技术



JAVA通过Session和Cookie实现网站自动登录的技术

本方案为我这个站点当前使用的,能用,但不保证是最先进的。

第一步,登陆的时候一旦选择了[自动登录]的选项,则需要在登陆成功后,附加下面的代码
应为一般网站都提供保存用户名的功能,所以我把这个写到了外面。只有密码是单独处理的。
其中的host就是你的域名
login.jsp
 
        String host = request.getServerName();
        Cookie cookie = new Cookie("SESSION_LOGIN_USERNAME", username); // 保存用户名到Cookie
        cookie.setPath("/");
        cookie.setDomain(host);
        cookie.setMaxAge(99999999);
        response.addCookie(cookie);
        if (ParamUtils.getBooleanParameter(request, "savePassword")) {
          // 保存密码到Cookie,注意需要加密一下
          cookie = new Cookie("SESSION_LOGIN_PASSWORD", MD5.encode(u.getPassword())); 
          cookie.setPath("/");
          cookie.setDomain(host);
          cookie.setMaxAge(99999999);
          response.addCookie(cookie);
        }
这样,Cookie就生成了
第二步,在用户访问网站的时候,如果检测到没有登陆,则进行下面的判断。
index.jsp
 
    String usernameCookie = null;
    String passwordCookie = null;
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
      for (Cookie cookie : cookies) {
        if ("SESSION_LOGIN_USERNAME".equals(cookie.getName())) {
          usernameCookie = cookie.getValue(); // 得到cookie的用户名
        }
        if ("SESSION_LOGIN_PASSWORD".equals(cookie.getName())) {
          passwordCookie = cookie.getValue(); // 得到cookie的密码
        }
      }
      if (usernameCookie != null && passwordCookie != null) { // 如果存在
        if(Login.checkLogin(usernameCookie ,passwordCookie)){
          // 登陆成功的处理
        }else{
           // 登陆不成功的处理
        }
      }
    }
很简单吧

最后一个注意事项,应该在退出登录里面清除cookie,以免他无法换账号登陆了!
logout.jsp
 
  cookie = new Cookie("SESSION_LOGIN_PASSWORD", "");
  cookie.setPath("/");
  cookie.setMaxAge(99999999);
  cookie.setDomain(host);
  response.addCookie(cookie);
安全提示:
一旦自动登录失败,则取消其自动登录的可能性,防止暴力破解!
方法可以简单的更新对应的User的一个属性。
这个标志只有下次正常输入验证码的登陆才会被清除!!
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:JAVA通过Session和Cookie实现网站自动登录的技术

学习了 收藏
java技术空间:hi.baidu.com/xhz12345 
编辑 回复 快速回复 TOP

Re:JAVA通过Session和Cookie实现网站自动登录的技术

你把密码也保存了啊,有点风险的,这样你的安全性就降低了,我觉得保存密码没有必要的,我在做这样的项目时没有保存密码的,我说一下我的做思路,在表中有一个用户的状态的字段,非正常状态是不能登陆的,然后有一个登陆表,记录最后登陆时间的,cookie有设置过期的,是这样判断的,当用户打开该页面时,如果以前有登陆而且有保存自动登陆这个功能且用户状态正常且cookie没有过期的,这样就可以不用保存密码了,就可以自动登陆了,
编辑 回复 快速回复 TOP

Re:JAVA通过Session和Cookie实现网站自动登录的技术

无论怎样,自动登录都只限于自己单独的机器。
而且密码是加密的,不可能知道源码,没有想象中的风险那么高!!

而且,一旦自动登录失败,则取消其自动登录的可能性,防止暴力破解!
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:JAVA通过Session和Cookie实现网站自动登录的技术

加密东西都有可能破解吧,如果你不给他这个可趁机会不是更好吗?当然就目前情况来看,破解了这个密码也没有多到用处 ,呵呵
编辑 回复 快速回复 TOP

Re:JAVA通过Session和Cookie实现网站自动登录的技术

MD5,在一般情况下,无法还原原始密码的。而且,我们可以用MD5的变种。呵呵!
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:JAVA通过Session和Cookie实现网站自动登录的技术

Cookie不是保存在C:\Documents and Settings\Administrator\Cookies里的吗?
为什么我里面什么都没有,我电脑里的COOKIE都保存到哪里了?
人生的最大遗憾莫过于错误地坚持了不该坚持的,轻易地放弃了不该放弃的…… 
编辑 回复 快速回复 TOP
发新话题