zoukankan      html  css  js  c++  java
  • Java Web 自动登录

    一、客户端选择自动登录复选框,LoginServlet得到数据后,判断是否选择了复选框,若成功选中则创建cookies对象,并添加到响应头中

     1 //若用户选择自动登录,则生成cookies保存必要信息
     2                 if("auto".equals(autoLogin)){
     3          //cookies需要设置编码格式

                 Cookie cookie = new Cookie("username", URLEncoder.encode(username, "utf-8"));
     4                     Cookie cookie2 = new Cookie("password",password);
     5                     //设置保存时间
     6                     cookie.setMaxAge(7*24*60*60);
     7                     cookie2.setMaxAge(7*24*60*60);
     8                     //设置保存路径
     9                     cookie.setPath(request.getContextPath()+"/");
    10                     //添加到响应头
    11                     response.addCookie(cookie);
    12                     response.addCookie(cookie2);
    13                 }

    二、下次当用户来到Login.jsp后,会从cookies(每一个站点有唯一的cookies)中判断是否有存入的username和password,若有则直接发送给LoginServlet判断,若没有则执行普通登录操作(JSP中写代码)

     1 <%
     2    Cookie[] cookies=request.getCookies();
     3    String username = null;
     4    String password = null;
     5    if(cookies!=null){
     6            for(int i=0;i<cookies.length;i++){
     7                String name = cookies[i].getName();
     8                if("username".equals(name)){
     9          //如果是中文,cookies需要解码

                username = URLDecoder.decode(cookies[i].getValue(), "utf-8");
    10                }else if("password".equals(name)){
    11                    password = cookies[i].getValue();
    12                }
    13            }
    14    }
    15    //当用户名和密码不为空时,自动登录
    16    if((username!=null&&!("".equals(username)))&&(password!=null&&!("".equals(password)))){
    17            session.setAttribute("username", username);
    18            session.setAttribute("password", password);
    19            response.sendRedirect(request.getContextPath()+"/LoginServlet");//get请求
    20    }
    21  %>


     三、LoginServlet做自动登录检验,同样是传值到数据库校验,此时,若校验成功则带着用户名信息到Index.jsp,若检验失败则重定向至exitServlet执行删除cookies操作

     1 //1.通过session得到参数
     2         HttpSession session = request.getSession();
     3         String username = (String)session.getAttribute("username");
     4         String password = (String)session.getAttribute("password");
     5         //进行if判断,防止有用户直接通过URL带参数的形式进行访问
     6         if(username!=null&&password!=null){
     7         //2.连接数据库进行数据校验
     8             User user = LogSercice.Instance().checkLogin(username,password);
     9             if(user==null){
    10                 //返回处理删除cookies的servlet
    11                 response.sendRedirect(request.getContextPath()+"/exitServlet");
    12             }else {
    13                 //登陆成功,跳转到主页面,并显示"欢迎您,XXX"
    14                 
    15                 response.sendRedirect(request.getContextPath()+"/Index.jsp");
    16             }
    17         }
    18         
    19     }

    四、若失败至SexitServlet删除cookies 

     1 //1.删除会话
     2         HttpSession session = request.getSession();
     3         session.invalidate();
     4         //2.得到cookies
     5         Cookie[] cookies = request.getCookies();
     6         //3.遍历删除cookies中的值
     7         for(int i=0;i<cookies.length;i++){
     8             Cookie cookie = cookies[i];
     9             cookie.setMaxAge(0);
    10             cookie.setValue(null);
    11             cookie.setPath(request.getContextPath()+"/");
    12             response.addCookie(cookie);
    13         }
    14         response.sendRedirect(request.getContextPath()+"/Login.jsp");
    15     }

    五、当成功进入到Index.jsp中,此时想按下超链接退出登录(即下次不再执行自动登录时), 超链接的href直接链接至exitServlet即可

    1 href="<%=basePath%>exitServlet"
  • 相关阅读:
    在linux上安装docker
    【oracle 补丁分类】
    【识记】 域名备案
    【Mysql】Mysql在大型网站的应用架构演变
    【安全】 各大企业的安全服务内容
    【前端知识网站 】 HTML ,CSS 和 Javascript
    【安全】 xss跨站脚本攻击
    【数据库 工具】
    【安全】渗透测试书单与工具
    【渗透测试 在线资源】
  • 原文地址:https://www.cnblogs.com/ccw95/p/6025216.html
Copyright © 2011-2022 走看看