• 验证码


    如何设计验证码的实现

                <input id="txtUserName" type="text" name="username" class="username" placeholder="请输入您的用户名!">
                <input id="txtPassword" type="password" name="password" class="password" placeholder="请输入您的用户密码!">
                <input type="Captcha" class="Captcha" name="Captcha" placeholder="请输入验证码!" />
                <img src="/Backstage/Home/CheckCode?ID=1" id="imgCode" class="check" alt="单击可刷新" onclick="ChangeCode();" />
                @*<a href="javascript:void(0)" onclick="ClickRemoveChangeCode();return false;">看不清</a>*@
                <button id="btnLogin" type="submit" class="submit_button">登录</button>
                <div class="error"><span>+</span></div>
    (1)首先我们看到我们绑定验证码的这里是这样写的,<img src=”/Login/CheckCode?ID=1”>,那么前面的src绑定的地址什么意思呢?他的意思就是我们在Login控制器下面含有一个CheckCode方法来实现验证码的读取

    (2)我们要实现验证码,首先我们就要写一个生成验证码的类,没什么难度,网上一搜一大推,下面就是我封装的生成验证码的类,首先我们在LYZJ.UserLimitMVC.Common类库下面新建一个KenceryValidateCode.cs类来存放生成验证码的代码,在这里我们需要给类库引入命名空间System.Drawing。最终的代码如下:

    KenceryValidateCode.cs

     

     

    (3)那么现在我们的验证码生成的类已经完成了,这时候我们根据<img src=”/Login/CheckCode?ID=1”>所知,我们要到Login控制器下面去创建CheckCode方法来实现能够从View层读取验证码显示出来,那么必然在我们项目当中women就要用到刚才定义的获取验证码的类,那么这时候women就要添加LYZJ.UserLimitMVC.Common的引用,这时候在Login控制器下面的读取验证码的方法代码如下:

            /// <summary>
            /// 验证码的实现
            /// </summary>
            /// <returns></returns>
            public ActionResult CheckCode()
            {
                //首先实例化验证码的类
                KenceryValidateCode validateCode = new KenceryValidateCode();
                //生成验证码指定的长度
                string code = validateCode.CreateValidateCode(4);
                //将验证码赋值给Session变量
                Session["ValidateCode"] = code;
                Session.Timeout = 30;
                //创建验证码的图片
                byte[] bytes = validateCode.CreateValidateGraphic(code);
                //最后将验证码返回
                return File(bytes, @"image/jpeg");
            }

    (4)view视图页面

    Login.cshtml
  • 相关阅读:
    Redis配置文件的使用
    WEB请求处理一:浏览器请求发起处理
    Nginx配置文件(nginx.conf)配置详解
    【node】------mongoose的基本使用
    Promise.resolve()与new Promise(r => r(v))
    promise是什么?
    apiDoc
    apiDoc 使用指南
    微信小程序-性能与体验优化
    微信小程序-调取上一页的方法
  • 原文地址:https://www.cnblogs.com/tangge/p/4220399.html
Copyright © 2020-2023  润新知