web实现登录,记住密码功能(cookie)

界面:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>登录页面</title>
        <link rel="stylesheet" href="layui/css/layui.css">
        <script src="js/jquery.js"></script>
        <script src="js/jquery.cookie.js"></script>
        <script src="js/jquery.base64.js"></script>
        <style  type="text/css"> 
            html,body{
                height:100%;
                width:100%;
                background-color: #53E3A6;
            }
            .div1{
                height: 300px;
                width: 400px;
                position: absolute;
                top: 50%;
                left: 50%;
                margin-top: -150px;
                margin-left: -200px;
                background: #F0F0F0;
                text-align: center;
                padding-top: 10px;
            }
        </style>
    </head>
    <body  οnlοad="getCookie();">
        <div class="div1">
            <h2>后台管理系统</h2>
            <div>
                <div style="margin: 10px;">
                  <input id="zhanghao" type="text" name="zhanghao" required lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input" value="admin">
                </div>
                <div style="margin: 10px;">
                  <input id="mima" type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input" value="123456">
                </div>
                <div style="margin: 10px;">
                    <input style="position: absolute;left: 10px;width: 20px;height: 20px;" type="checkbox" name="jizhu" title="发呆" lay-skin="primary">
                    <span style="position: absolute;left: 40px;">记录密码</span>
                </div>
                <div style="margin-top: 50px;">
                    <button id="denglu" class="layui-btn" style="width: 200px;">登录</button>
                </div>
            </div>
        </div>
        <script>
            //var loginurl="http://localhost:8088/register";
            var loginurl="http://localhost:8088/login";
            $("#denglu").click(function(){
                login();
            });
            //设置cookie  
            function setCookie(){   
                 var loginCode = $("#zhanghao").val(); //获取用户名信息    
                 var pwd = $("#mima").val(); //获取登陆密码信息    
                 var checked = $("input[type='checkbox']").is(':checked');//获取“是否记住密码”复选框  
                   //console.log("setCookie方法是否记住密码:"+checked);
                 if(checked){ //判断是否选中了“记住密码”复选框    
                     //设置cookie过期时间
                     var date = new Date();
                    date.setTime(date.getTime()+60*1000);//只能这么写,60表示60秒钟
                    //console.log("cookie过期时间:"+date);
                    $.cookie("login_code",loginCode,{ expires: date, path: '/' });//调用jquery.cookie.js中的方法设置cookie中的用户名    
                    $.cookie("pwd",$.base64.encode(pwd),{ expires: date, path: '/' });//调用jquery.cookie.js中的方法设置cookie中的登陆密码,并使用base64(jquery.base64.js)进行加密
                 }else{     
                     $.cookie("login_code", null);  
                    $.cookie("pwd", null);     
                 }      
            } 
            
            //清除所有cookie函数
            function clearAllCookie() {
                var date=new Date();
                date.setTime(date.getTime()-10000);
                var keys=document.cookie.match(/[^ =;]+(?=\=)/g);
                console.log("需要删除的cookie名字:"+keys);
                if (keys) {
                    for (var i =  keys.length; i--;)
                      document.cookie=keys[i]+"=0; expire="+date.toGMTString()+"; path=/";
                }
            }
            //获取cookie    
            function getCookie(){ 
                 var loginCode = $.cookie("login_code"); //获取cookie中的用户名    
                 var pwd =  $.cookie("pwd"); //获取cookie中的登陆密码  
                 console.log("获取cookie:账户:"+loginCode);
                 console.log("获取cookie:密码:"+pwd);
                 if (!loginCode||loginCode==0) {
                      console.log("账户:"+!loginCode);
                      //alert("请输出内容!");
                 }else{
                     $("#zhanghao").val(loginCode);   
                 }
                 if(!pwd||pwd==0){
                     console.log("密码:"+!pwd);
                 }else{
                     //密码存在的话把密码填充到密码文本框    
                     //console.log("密码解密后:"+$.base64.decode(pwd));
                    $("#mima").val($.base64.decode(pwd));
                    //密码存在的话把“记住用户名和密码”复选框勾选住    
                    $("[name='jizhu']").attr("checked","true");
                 }
                     
            } 
            function login(){     
                var userName = $('#zhanghao').val(); 
                console.log("用户名:"+userName);
                if(userName == ''){    
                    alert("请输入用户名。");    
                    return;    
                }    
                var userPass =$('#mima').val(); 
                console.log("密码:"+userPass);
                if(userPass == ''){    
                    alert("请输入密码。");    
                    return;    
                }  
                //判断是否选中复选框,如果选中,添加cookie  
                var jizhupwd=$("input[type='checkbox']").is(':checked');
                console.log("是否记住密码:"+jizhupwd);
                if(jizhupwd){    
                    //添加cookie    
                    setCookie();      
                }else{    
                    clearAllCookie();
                }  
                netWorking(userName,userPass);//联网上传账号密码
            }
            function netWorking(zhanghao,mima){
                    $.ajax({
                        type:"post",    
                        url:loginurl,    
                        data:{
                             username:zhanghao,  //期刊id
                             password:mima, 
                        }, 
                        success: function(res) {
                           console.log("请求数据1.:"+res);
                           console.log("请求数据2.:"+JSON.stringify(res));
                           var datas=eval(res);
                           var ticket=datas.ticket;
                              //var ticket=datas.msg;
                           console.log("请求数据2.:"+ticket);
                           if (ticket==undefined) {
                                 alert("请您先注册");
                           } else{
                               window.location.href='htmls/home.html';
                           }
                        },
                        error:function() { 
                            alert("失败");
                       } 
                    });
            }

        </script>
    </body>
</html>

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面是使用 Filter 实现用户自动登录的代码示例: Filter代码: ```java public class AutoLoginFilter implements Filter { private String username; private String password; private String rememberMe; @Override public void init(FilterConfig filterConfig) throws ServletException { // 读取配置文件中的用户名、密码记住我选项 username = filterConfig.getInitParameter("username"); password = filterConfig.getInitParameter("password"); rememberMe = filterConfig.getInitParameter("rememberMe"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; HttpSession session = req.getSession(); // 判断用户是否已经登录 if (session.getAttribute("user") == null) { // 判断用户是否选择了记住Cookie[] cookies = req.getCookies(); String cookieUsername = null; String cookiePassword = null; String cookieRememberMe = null; if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().equals("username")) { cookieUsername = cookie.getValue(); } if (cookie.getName().equals("password")) { cookiePassword = cookie.getValue(); } if (cookie.getName().equals("rememberMe")) { cookieRememberMe = cookie.getValue(); } } } if (username.equals(cookieUsername) && password.equals(cookiePassword) && "true".equals(cookieRememberMe)) { // 用户已经选择了记住我并且Cookie中保存的用户名和密码与配置文件中的相同,将用户信息存入Session中 session.setAttribute("user", new User(username, password)); } } chain.doFilter(request, response); } @Override public void destroy() { } } ``` 使用方法: 1. 在 web.xml 文件中配置过滤器和过滤器参数: ```xml <filter> <filter-name>AutoLoginFilter</filter-name> <filter-class>com.example.AutoLoginFilter</filter-class> <init-param> <param-name>username</param-name> <param-value>admin</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>admin</param-value> </init-param> <init-param> <param-name>rememberMe</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>AutoLoginFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 2. 在登录页面中添加记住我选项,用户勾选后,将用户名、密码记住我选项保存到 Cookie 中: ```java if (rememberMe != null) { Cookie usernameCookie = new Cookie("username", username); usernameCookie.setMaxAge(60 * 60 * 24 * 7); // 保存一周 resp.addCookie(usernameCookie); Cookie passwordCookie = new Cookie("password", password); passwordCookie.setMaxAge(60 * 60 * 24 * 7); // 保存一周 resp.addCookie(passwordCookie); Cookie rememberMeCookie = new Cookie("rememberMe", "true"); rememberMeCookie.setMaxAge(60 * 60 * 24 * 7); // 保存一周 resp.addCookie(rememberMeCookie); } ``` 注意:在实际开发中,为了安全起见,保存到 Cookie 中的密码应该进行加密处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值