验证码

如何设计验证码的实现

            <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
posted @ 2015-01-13 09:15  【唐】三三  阅读(922)  评论(0编辑  收藏  举报