zoukankan      html  css  js  c++  java
  • 网站登录时记住密码

     UI层一个登录框,一个密码框,一个验证码框 ,然后一个记住密码 

    <div class="banner">

    <div class="login-aside">
    <div id="o-box-up" style="height:400px"></div>
    <div id="o-box-down" style="table-layout:fixed;height:400px;">
    <div class="error-box"></div>
    <form class="registerform" method="post" action="/shop/account/login">
                            <input type="hidden" value="@ViewBag.returnUrl" name="url" />
    <div class="fm-item">
    <label for="logonId" class="form-label">用户登录:</label>
    @*<input type="text" value="请输入账号" maxlength="100" id="username" class="i-text" >*@
                                @Html.TextBoxFor(m => m.username, new {@class="i-text",@placeholder="请输入账号" })<br />
                                @Html.ValidationMessageFor(m=>m.username)
    <div class="ui-form-explain"></div>
    </div>
    <div class="fm-item">
    <label for="logonId" class="form-label">输入密码:</label>
    @*<input type="password" name="password" value="" maxlength="100" id="password" class="i-text" >*@
                                @Html.PasswordFor(m => m.password, new { @class="i-text",@placeholder="请输入密码"})<br />
                                @Html.ValidationMessageFor(m=>m.password)
    <div class="ui-form-explain"></div>
    </div>
    <div class="fm-item pos-r">
    <label for="logonId" class="form-label">验证码</label>
    @*<input type="text" id="authInput" value="输入验证码"  id="yzm" class="i-text yzm" >*@
                                @Html.TextBoxFor(m => m.authInput, new {@class="i-text yzm",@placeholder="请输入验证码" })
    <div class="ui-form-explain"><img id="authCode" height="38" width="80" src="/shop/account/authCode" onclick="this.src='/shop/account/authCode?r='+Math.random()" class="yzm-img" /></div>
    </div>
                            
                              <div class="fm-item" style="padding-top:10px">
                               @Html.CheckBoxFor(m=>m.isRemember)
                                    @*<input type="checkbox" />*@
                                        <span class="remember" style="line-height: 12px;text-align: left; auto;font-size: 14px; color: #fff; font-weight: bold; ">记住密码</span>
                                   
                                <div class="findPass">
                                    <a class="findpassLink" href="#" style="display:none;">忘记密码</a>
                                </div>
                            </div>
    <div class="fm-item">
    <label for="logonId" class="form-label">@Html.ValidationMessage("error")</label>
    <input type="submit" value="登录" tabindex="4" id="send-btn" class="btn-login">
    </div>
    </form>
    </div>
    </div>

    controller中第一个是登录,登录的时候验证是否勾选了记住密码 ,记住了就存入cookie

       #region 登陆
            /// <summary>
            /// 登陆
            /// </summary>
            /// <param name="url">返回页面</param>
            /// <returns></returns>
    [HttpGet]
            public ActionResult login(string url = "")
            {
                ViewBag.userInfo = getRUserInfo();
                ViewBag.returnUrl = url;
                return View();
            }
            /// <summary>
            /// 执行登陆
            /// </summary>
            /// <param name="userName"></param>
            /// <param name="passWord"></param>
            /// <param name="authCode"></param>
            /// <param name="isRemember"></param>
            /// <returns></returns>
            [HttpPost]
    public ActionResult login(shopModel model, string url)
            {
                string mess = "serverErr";
                if (Session["auth"] != null)
                {
                   
    if (ModelState.IsValid)
    {
    if (Session["auth"].ToString().ToLower() == model.authInput.ToLower())
    {
    //string md5_pass = getMD5Code(model.password);//密码
                           DataProtectionProxy.DataProtectionProxy dp = new DataProtectionProxy.DataProtectionProxy();
                            if (String.IsNullOrEmpty(model.password))
                                model.password = "";
                            else
                                model.password= dp.Encrypt(model.password);
    Web.Model.WeiXin.User user = new AccountHandler().login(model.username, model.password);
    if (user != null)
    {
    Session["wx_user"] = user;
    if (model.isRemember)
    {
    addRUserInfo(new Web.Model.WeiXin.User() { loginname = model.username, password = model.password });
    }
    else
    {
    deleteRUserInfo();
    }
    if (string.IsNullOrEmpty(url))
    {
    return Redirect("/shop/order/shopcart"); 
    }
    else
    {
    return Redirect(url);
    }
    }
    else
    {
    ModelState.AddModelError("error", "用户名或密码输入错误");
    }
    }
    else
    {
    ModelState.AddModelError("error", "验证码输入错误");
    }
                    }
                   
                }
    ViewBag.returnUrl = url;
    return View();
            }
            /// <summary>
            /// 登出操作
            /// </summary>
            /// <returns></returns>
            [HttpPost]
            public ActionResult logout()
            {
                Session.Remove("wx_user");
                return Content("success");
            }
            #endregion
            #region  修改记录用户信息
            /// <summary>
            /// 设置本地记录用户信息
            /// </summary>
            /// <param name="user"></param>
            public void addRUserInfo(Web.Model.WeiXin.User user)
            {
                string userInfo = Newtonsoft.Json.JsonConvert.SerializeObject(user);
                HttpCookie cookie = new HttpCookie("r_userInfo");
                cookie.Value = HttpUtility.UrlEncode(userInfo, Encoding.UTF8);
                cookie.Expires = DateTime.Now.AddDays(7);
                Response.Cookies.Add(cookie);
            }
            /// <summary>
            /// 获取本机记录用户信息
            /// </summary>
            /// <returns></returns>
            public Web.Model.WeiXin.User getRUserInfo()
            {
               Web.Model.WeiXin.User user = newWeb.Model.WeiXin.User();
                if (Request.Cookies["r_userInfo"] != null)
                {
                    JsonSerializer jserial = new JsonSerializer();
                    StringReader strread = new StringReader(HttpUtility.UrlDecode(Request.Cookies["r_userInfo"].Value, Encoding.UTF8));
                    user = jserial.Deserialize<TeenySoft.Web.Model.WeiXin.User>(new JsonTextReader(strread));
                    return user;
                }
                return null;
            }
            /// <summary>
            /// 删除本机记录用户信息
            /// </summary>
            public void deleteRUserInfo()
            {
                if (Request.Cookies["r_userInfo"] != null)
                {
                    Response.Cookies["r_userInfo"].Expires = DateTime.Now.AddDays(-1);
                    Response.Cookies.Set(Response.Cookies["r_userInfo"]);
                }
            }
            #endregion
            #region  验证码
            /// <summary>
            /// 图片验证码
            /// </summary>
            public void authCode()
            {
                string authCode = getAuthCode();
                Session["auth"] = authCode;
                Response.ContentType = "image/jpeg";
                createActhImg(authCode).Save(Response.OutputStream, ImageFormat.Jpeg);
            }
            /// <summary>
            /// 生成验证码图片
            /// </summary>
            /// <param name="authCode"></param>
            /// <returns></returns>
            public Image createActhImg(string authCode)
            {
    Bitmap result = null;
    //创建绘图
    result = new Bitmap(authCode.Length * 16, 25);
    using (Graphics objGraphics = Graphics.FromImage(result))
    {
    objGraphics.SmoothingMode = SmoothingMode.HighQuality;
    //清除整个绘图面并以指定背景色填充
    objGraphics.Clear(Color.AliceBlue);
    //创建画笔
    using (SolidBrush objSolidBrush = new SolidBrush(Color.Black))
    {
    this.AddForeNoisePoint(result);
    this.AddBackgroundNoisePoint(result, objGraphics);
    //文字居中
    StringFormat objStringFormat = new StringFormat(StringFormatFlags.NoClip);
    objStringFormat.Alignment = StringAlignment.Center;
    objStringFormat.LineAlignment = StringAlignment.Center;
    //字体样式
    Font objFont = new Font(FontFamily.GenericSerif, objRandom.Next( 18- 3, 18), FontStyle.Regular);
    //验证码旋转,防止机器识别
    char[] chars = authCode.ToCharArray();
    for (int i = 0; i < chars.Length; i++)
    {
    //转动的度数
    float angle = objRandom.Next(-randomAngle,randomAngle);
    objGraphics.TranslateTransform(12, 12);
    objGraphics.RotateTransform(angle);
    objGraphics.DrawString(chars[i].ToString(), objFont, objSolidBrush, -2, 2, objStringFormat);
    objGraphics.RotateTransform(-angle);
    objGraphics.TranslateTransform(2, -12);
    }
    }
    }
    return result;
            }
    /// <summary>
            /// 添加前景噪点
            /// </summary>
            /// <param name="objBitmap"></param>
            private void AddForeNoisePoint(Bitmap objBitmap)
            {
                for (int i = 0; i < objBitmap.Width * this.foreNoisePointCount; i++)
                {
                    objBitmap.SetPixel(objRandom.Next(objBitmap.Width), objRandom.Next(objBitmap.Height), Color.SeaGreen);
                }
            }
            /// <summary>
            /// 添加背景噪点
            /// </summary>
            /// <param name="objBitmap"></param>
            /// <param name="objGraphics"></param>
            private void AddBackgroundNoisePoint(Bitmap objBitmap, Graphics objGraphics)
            {
                using (Pen objPen = new Pen(Color.Azure, 0))
                {
                    for (int i = 0; i < objBitmap.Width * 2; i++)
                    {
                        objGraphics.DrawRectangle(objPen, objRandom.Next(objBitmap.Width), objRandom.Next(objBitmap.Height), 1, 1);
                    }
                }
            }
           
            /// <summary>
            /// 生成验证码
            /// </summary>
            /// <returns></returns>
            public string getAuthCode()
            {
                string authCode = "";
                Random rand = new Random();
                for (int i = 0; i < 4; i++)
                {
                    int action = rand.Next(2);
                    switch (action)
                    {
                        case 0:
                            authCode += (char)rand.Next(48, 58);
                            break;
                        case 1:
                            authCode += (char)rand.Next(65, 91);
                            break;
                    }
                }
                return authCode;
            }
            /// <summary>
            /// MD5编码
            /// </summary>
            /// <param name="pwd"></param>
            /// <returns></returns>
            public string getMD5Code(string pwd)
            {
                byte[] result = Encoding.Default.GetBytes(pwd);    //tbPass为输入密码的文本框  
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] output = md5.ComputeHash(result);
                return BitConverter.ToString(output).Replace("-", "");  //tbMd5pass为输出加密文本的文本框  
            }
            #endregion
  • 相关阅读:
    Python 面向对象(下)
    Python 面向对象(上)
    《面向对象程序设计概述》 牛咏梅
    lastIndexOf is not a function
    oracle lpad 函数使用介绍
    oracle中length、lengthb、substr、substrb用法小结
    oracle获取字符串长度函数length()和hengthb()
    js获取当前日期时间
    win7系统下查看端口的占用情况以及如何删除端口进程
    IntelliJ IDEA “Finds duplicated code”提示如何关闭
  • 原文地址:https://www.cnblogs.com/superMay/p/5725095.html
Copyright © 2011-2022 走看看