zoukankan      html  css  js  c++  java
  • 引用借以记录借鉴 实现记住密码和自动登录功能

    WEB页面代码:

                <form id="Form1" runat="server">
                <input type="hidden" id="hidPass" runat="server" />
                <input type="text" runat="server" id="txtLoginName" />
                <asp:TextBox runat="server" ID="txtPassWord" class="textwidthheigh" TextMode="Password"></asp:TextBox>
                <input type="checkbox" runat="server" value="记住密码" id="chkRemember" onclick="CheckRemember()" />
                <input type="checkbox" runat="server" value="自动登录" id="chkLogin" onclick="CheckLogin()" />
                <asp:Button runat="server"  id="btnLogin"  onclick="btnLogin_Click"  />
                <input type="button" id="btnClear" onclick="Clear()"  />
                </form>
                <script type="text/javascript" language="javascript">
                //页面加载用户名输入框获得焦点
                document.getElementById("txtLoginName").focus();
                function Clear() {
                //用户点击取消,清空用户名和用户密码
                document.getElementById("txtLoginName").value = "";
                document.getElementById("txtPassWord").value = "";
                }
                function CheckLogin() {
                //用户勾选自动登录时,把记住密码也勾选上
                var remember = document.getElementById("chkRemember");
                remember.checked = true;
                }
                function CheckRemember() {
                var remenber = document.getElementById("chkRemember");
                var login = document.getElementById("chkLogin");
                if (remenber.checked == false) {
                login.checked = false;
                //用户去掉记住密码时,也把自动登录去掉
                }
                }
            
                </script>

    后台代码:

     protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //获取客户端的Cookies,分别两个cookies,一个登陆名,一个密码
                    HttpCookie LoginNameCookie = Request.Cookies["Bic_LoginName"];
                    HttpCookie LoginPassCookie = Request.Cookies["Bic_Pass"];
                    if (LoginNameCookie != null)
                    {
                        //登录名的cookies不为空,填充登陆名
                        txtLoginName.Value = LoginNameCookie.Value;
                    }
                    if (LoginPassCookie != null)
                    {
                        //密码cookies不为空,给密码框和隐藏密码框填充,当然我们的密码是加密过才存到cookies去的,至于以藏文本框的作用后面就会看到
                        this.txtPassWord.Attributes.Add("value", LoginPassCookie.Value + "");
                        hidPass.Value = LoginPassCookie.Value + "";//赋值给隐藏控件
                        chkRemember.Checked = true;
                    }
                    //获取是否有勾选自动登录的cookies
                    HttpCookie Login = Request.Cookies["Bic_LoginAuto"];
                    //当用户在系统点击退出时
                    if (Request["opFlag"] == "Exit")
                    {
                        this.txtPassWord.Attributes.Add("value", "");//把密码去掉
                        chkRemember.Checked = false;//记住密码去掉
                        HttpCookie loginNameCookie = Request.Cookies["Bic_LoginName"];//获取登录名cookies
                        HttpCookie loginPassCookie = Request.Cookies["Bic_Pass"];//获取密码cookies
                        if (loginNameCookie != null)
                        {
                            //把cookies时间设为-2相当于删掉了cookies
                            loginNameCookie.Expires = DateTime.Now.AddDays(-2);
                            Response.Cookies.Set(loginNameCookie);
                        }
                        if (loginPassCookie != null)
                        {
                            //把密码的cookies也删掉
                            loginPassCookie.Expires = DateTime.Now.AddDays(-2);
                            Response.Cookies.Set(loginPassCookie);
                        }
                        //自动登录cookies也一样
                        HttpCookie login = Request.Cookies["Bic_LoginAuto"];
                        if (login != null)
                        {
                            login.Expires = DateTime.Now.AddDays(-2);
                            Response.Cookies.Set(login);
                        }
                    }
                    else//用户打开登录界面时
                    {
                        //自动登录cookies不为空,用户名不为空,隐藏框密码不为空
                        if (Login != null && txtLoginName.Value != "" && hidPass.Value != "")
                        {
                            SysUser user = new SysUser();
                            user.Login_Name = txtLoginName.Value;
                            user.Login_Pass = hidPass.Value;
                            int i = SysUserBLL.Login(user);//验证登录
                            if (i > 0)
                            {
                                //成功登录跳转到default.aspx页面
                                Page.Session["Login_Name"] = user.Login_Name;
                                HttpContext.Current.Session["Display_Name"] = SysUserBLL.getDisplayNameByname(user.Login_Name);
                                Response.Write("<script>window.location='Default.aspx';</script>");
                                Response.End();
                            }
                        }
                    }
                }
            }
            //点击登录按钮事件
            protected void btnLogin_Click(object sender, EventArgs e)
            {
                //判断是否为空
                if (txtLoginName.Value.Trim() != "" && txtPassWord.Text.Trim() != "")
                {
                    SysUser user = new SysUser();
                    user.Login_Name = txtLoginName.Value.Trim();
                    user.Login_Pass = CommonHelper.MD5encipher(txtPassWord.Text.Trim());//MD5加密
                    HttpCookie LoginNameCookie = Request.Cookies["Bic_LoginName"];
                    HttpCookie LoginPassCookie = Request.Cookies["Bic_Pass"];
                    if (LoginNameCookie != null)//如果是记住密码情况
                    {
                        if (txtLoginName.Value.Trim() == LoginNameCookie.Value.Trim())//读取到cookies保存的用户名和文本框用户名相同,预防用户又改动
                        {
                            if (LoginPassCookie != null)
                            {
                                if (txtPassWord.Text.Trim() == LoginPassCookie.Value.Trim())//cookies读取到的密码和文本框密码相同
                                {
                                    user.Login_Pass = txtPassWord.Text.Trim();
                                }
    
                            }
                        }
                    }
                    int i = SysUserBLL.Login(user);//验证登录
                    if (i > 0)
                    {
                        if (chkRemember.Checked == true)//记住密码
                        {
                            HttpCookie loginNameCookie = new HttpCookie("Bic_LoginName", user.Login_Name);
                            HttpCookie loginPassCookie = new HttpCookie("Bic_Pass", user.Login_Pass);
                            loginPassCookie.Expires = DateTime.Now.AddDays(1);
                            loginNameCookie.Expires = DateTime.Now.AddDays(1);
                            Response.Cookies.Add(loginNameCookie);
                            Response.Cookies.Add(loginPassCookie);
                            if (chkLogin.Checked == true)//自动登录 
                            {
                                HttpCookie Login = new HttpCookie("Bic_LoginAuto", "true");
                                Login.Expires = DateTime.Now.AddDays(1);
                                Response.Cookies.Add(Login);
                            }
                            else
                            {
                                HttpCookie Login = Request.Cookies["Bic_LoginAuto"];
                                if (Login != null)
                                {
                                    Login.Expires = DateTime.Now.AddDays(-2);
                                    Response.Cookies.Set(Login);
                                }
                            }
                        }
                        else//没选记住密码
                        {
                            HttpCookie loginNameCookie = Request.Cookies["Bic_LoginName"];
                            HttpCookie loginPassCookie = Request.Cookies["Bic_Pass"];
                            if (loginNameCookie != null)
                            {
                                loginNameCookie.Expires = DateTime.Now.AddDays(-2);
                                Response.Cookies.Set(loginNameCookie);
                            }
                            if (loginPassCookie != null)
                            {
                                loginPassCookie.Expires = DateTime.Now.AddDays(-2);
                                Response.Cookies.Set(loginPassCookie);
                            }
                        }
                        Page.Session["Login_Name"] = user.Login_Name;
                        HttpContext.Current.Session["Display_Name"] = SysUserBLL.getDisplayNameByname(user.Login_Name);
                        Response.Write("<script>window.location='Default.aspx';</script>");
                    }
                    else
                    {
                        Response.Write("<script>alert('用户名或密码错误!');window.location='Login.aspx';</script>");
                    }
                }
                else
                {
                    Response.Write("<script>alert('请输入账号和密码!');window.location='Login.aspx';</script>");
                }
            }
  • 相关阅读:
    Perl的运算符号字符
    windows xp 使用远程桌面时的关机/重新启动方法
    抵御TCP的洪水
    远程桌面连接中的常见问题 连接上就断开
    批量kill mysql进程
    Linux如何查看硬盘型号和缓存
    Apache Rewrite 规则详解
    nginx 内置变量大全
    大数据量分页存储过程效率测试附代码
    ASP.Net 更新页面输出缓存的几种方法(包括用户控件,iframe,页面缓存等)
  • 原文地址:https://www.cnblogs.com/Warmsunshine/p/3531231.html
Copyright © 2011-2022 走看看