设置登录时的图形验证码

首先建一个一般处理程序,命名为RandomCode.ashx

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Collections;
  6 using System.Configuration;
  7 using System.Data;
  8 using System.Web;
  9 using System.Web.UI;
 10 using System.Web.UI.WebControls;
 11 using System.Web.UI.WebControls.WebParts;
 12 using System.Web.UI.HtmlControls;
 13 using System.Drawing;
 14 
 15 namespace IntegritySystem.Web.Tools
 16 {
 17     /// <summary>
 18     /// RandomCode 的摘要说明
 19     /// </summary>
 20     public class RandomCode : IHttpHandler, System.Web.SessionState.IRequiresSessionState
 21     {
 22         public void ProcessRequest(HttpContext context)
 23         {
 24             string checkCode = GetRandomCode(5);
 25             context.Session["CheckCode"] = checkCode;
 26             SetPageNoCache();
 27             CreateImage(checkCode);
 28         }
 29         //获取验证码各个字母
 30         private string GetRandomCode(int CodeCount)
 31         {
 32             string allChar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,i,J,K,M,N,P,Q,R,S,T,U,W,X,Y,Z";
 33             string[] allCharArray = allChar.Split(',');
 34             string RandomCode = "";
 35             int temp = -1;
 36             Random rand = new Random();
 37             for (int i = 0; i < CodeCount; i++)
 38             {
 39                 if (temp != -1)
 40                 {
 41                     rand = new Random(temp * i * ((int)DateTime.Now.Ticks));
 42                 }
 43                 int t = rand.Next(33);
 44                 while (temp == t)
 45                 {
 46                     t = rand.Next(33);
 47                 }
 48                 temp = t;
 49                 RandomCode += allCharArray[t];
 50             }
 51             return RandomCode;
 52         }
 53 
 54         //页面设置没有缓存
 55         private void SetPageNoCache()
 56         {
 57            HttpContext.Current.Response.Buffer = true;
 58            HttpContext.Current.Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
 59            HttpContext.Current.Response.Expires = 0;
 60            HttpContext.Current.Response.CacheControl = "no-cache";
 61            HttpContext.Current.Response.AppendHeader("Pragma", "No-Cache");
 62         }
 63 
 64         //设置背景图片
 65         private void CreateImage(string checkCode)
 66         {
 67             int iwidth = (int)(checkCode.Length * 14);
 68             System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 30);
 69             Graphics g = Graphics.FromImage(image);
 70             Font f = new System.Drawing.Font("Arial", 15);
 71             Brush b = new System.Drawing.SolidBrush(Color.Black);
 72             Brush r = new System.Drawing.SolidBrush(Color.FromArgb(166, 8, 8));
 73             g.Clear(System.Drawing.ColorTranslator.FromHtml("#fff"));//背景色
 74             char[] ch = checkCode.ToCharArray();
 75             for (int i = 0; i < ch.Length; i++)
 76             {
 77                 if (ch[i] >= '0' && ch[i] <= '9')
 78                 {
 79                     g.DrawString(ch[i].ToString(), f, r, 8 + (i * 12), 3);
 80                 }
 81                 else
 82                 {
 83                     g.DrawString(ch[i].ToString(), f, b, 3 + (i * 12), 3);
 84                 }
 85             }
 86             System.IO.MemoryStream ms = new System.IO.MemoryStream();
 87             image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
 88             HttpContext.Current.Response.Cache.SetNoStore();
 89             HttpContext.Current.Response.ClearContent();
 90             HttpContext.Current.Response.ContentType = "image/Jpeg";
 91             HttpContext.Current.Response.BinaryWrite(ms.ToArray());
 92             g.Dispose();
 93             image.Dispose();
 94         }
 95         public bool IsReusable
 96         {
 97             get
 98             {
 99                 return false;
100             }
101         }
102     }
103 }

然后前台调用:

           <input type="text" class="yzm" id="Codes" name="Codes" maxlength="6" style="width: 80px;
                        float: left;" />
                    <img id="codeimg" alt="验证码" src="/Tools/RandomCode.ashx" title="点击" style=" margin-bottom:-5px; cursor:pointer;"
                         onclick="EditCode(this)"/>

脚本点击事件:

 function EditCode() {
        document.getElementById("codeimg").src="/Tools/RandomCode.ashx?id="+Math.random();
    }

在就是后台验证就可以了:

 1           if (Session["CheckCode"] != null)
 2                 {
 3                     if (Codes.ToLower() != Session["CheckCode"].ToString().ToLower())
 4                     {
 5                         Message = "验证码输入错误,请输入正确的验证码!";
 6                         return Json(new { Success = b, ErrorMessage = Message }, JsonRequestBehavior.AllowGet);
 7                     }
 8                 }
 9                 else
10                 {
11                     Message = "验证码输入错误,请输入正确的验证码!";
12                     return Json(new { Success = b, ErrorMessage = Message }, JsonRequestBehavior.AllowGet);
13                 }

效果就是这样了,验证码个数可以调整:

 

转载于:https://www.cnblogs.com/wt-vip/p/5951760.html

第三章 第十六节 基于Python3的Webdriver API——Cookie处理和图形验证码问题解决 selenium处理Cookie获取问题和图形验证码问题 阅读详情

相关推荐

qt 生成验证码

qt 生成动态验证码 源码编译通过

Tool-验证码

<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> <exclusions> <exclusion&g...

qq_34972069的博客 547

QTools_V3.0.1_测绘_

箱测绘必备工具箱各种功能,应有尽有,非常方便

Qt实现登录验证码

示例 先放一下效果图 每次验证码输入错误或者点击验证码图片都可以进行验证码的刷新 正文 用到的是QFrame 需要用到UI里的类提升,自建一个新的设计师类,系统会自动生成.h和.cpp 我这里的类名用的是Ver,有需要的自行替换即可 Ver.h #ifndef VER_H #define VER_H #include <QFrame> #include <QLabel> #include <QString> namespace Ui { class Ver;

素璃的博客 3099

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

weixin_43205954的博客 2462

从‘炼丹’到‘讲理’:物理信息神经网络(PINN)的硬约束 vs 软约束,我该选哪个?

本文深入探讨了物理信息神经网络(PINN)中硬约束与软约束的选择策略,帮助研究者在深度学习中有效融入物理先验知识。通过对比两种约束方法的实现复杂度、数据效率和计算性能,提供了针对材料科学和流体动力学等领域的实用决策指南,并介绍了自适应约束和混合约束等前沿技术。

weixin_42535703的博客 527

Java(SpringBoot)实现图形验证码登录方案以及代码实现

Java(SpringBoot)实现验证码登录方案以及代码生成实现

一恍过去 1万+

Cursor Agent模式下如何优雅切换conda环境运行Python脚本?3种实用方法实测

本文针对Cursor Agent模式下运行Python脚本时环境错配的痛点,实测了三种优雅切换conda环境的实用方法。通过Shell全局配置、项目级.cursorrc文件定制以及对话中直接指令,开发者可以确保AI助手在正确的虚拟环境中执行代码,从而提升开发效率和协作流畅度。

redis7keeper的博客 597

【Qt学习】随机验证码生成 & 鼠标点击事件更新验证码

【Qt学习】随机验证码生成 & 鼠标点击事件更新验证码

m0_56051805的博客 2160

【Unity3D优化】优化内置shader的内存占用

在打AB包的过程中,并不会把这些Built-in的shader单独打包,并与材质球和预设体做好依赖,因此打AB包时,Unity会自行在材质球和预制体的AB包内每一个都包含进去用到的Built-in的Shader,而且运行时,由于加载的是不同的AB包,shader也是不同的实例,占用的也是多份内存。结合项目特点可以分析,由于项目里使用了大量的粒子特效,一些特殊的效果,会给特效师写定制的shader,但是这些常见的效果,特效师直接使用了Unity Built-in的shader。继续优化内存占用。

a310989583的专栏 2312

VHDL六层电梯控制器及仿真

六层电梯电梯 设计要求:设计一个六层电梯控制系统要求有超载、关门中断、提前关门清除报警信电梯外人的上升请求信号,电梯外人的下降请求信号, 电梯外人上升请求信号显示电梯外人下降请求信号显示到达楼层信号 设计思路:输入有clk时钟信号(频率为2Hz) full,deng,quick,clr超载、关门中断、提前关门清除报警c_u1,c_u2,c_u3,c_u4,c_u5电梯外人的上升请求c_d2,c_d3,c_d4,c_d5,c_d6 电梯外人的下降请求 d1,d2,d3,d4,d5,d6电梯内人的...

QQ_778132974的博客 1709

在Ant Design Pro登录功能中集成图形验证码组件

前言: 本篇文章只介绍在Ant Design Pro登录功能中集成图形验证码组件的方法步骤,服务端方法请参考《基于OAuth2.0授权系统的验证码功能》 正文: 在Ant Design Pro模板中,使用账号密码登录功能部分(如下图),并没有做图形验证码的开发,所以这部分功能就需要我们自己去实现。这里登录功能其实本质是一个表单提交,所以我们只需自己开发一个图形验证码表单控件就可以,具体实现如下。 1.图形验证码表单控件代码CaptchaInput.tsx: import React, {u.

hanxiaozhang的博客 5315

[网络安全提高篇] 一二〇.恶意软件动态分析经典沙箱Cape批量提取动态API特征

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍动态分析沙箱Cape的安装过程,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。然而,当样本数量增加时,单个样本分析会降低效率。这篇文章将讲解如何实现Cape沙箱的批量分析,通过调用Python脚本文件来实施批量处理,并将分析结果存储在指定位置,最后补充submit.py的参数及Python调用方式。基础性文章,希望对您有帮助!

杨秀璋的专栏 4121

用户登录图形验证码

1、依赖注入 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version&gt...

weixin_44606594的博客 694

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

天天酷科研的博客 3188

【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?

本文介绍了Halcon中为XLD轮廓模板添加极性信息的实用技巧。通过先以"ignore_local_polarity"模式创建模板,首次匹配获得位置后,使用set_shape_model_metric运算符结合真实图像为模板注入极性信息(边缘明暗方向)。这种方法弥补了XLD模板初始不支持极性的缺陷,可显著提升后续匹配的精度和抗干扰能力。实验显示,添加极性信息后的模板匹配效果明显优于无极性的匹配结果。该技术特别适用于基于手动绘制或处理后的XLD轮廓创建模板的场景。

songhuangong123的博客 750

SpringSecurity添加图形验证码认证功能

SpringSecurity添加图形验证码认证功能 第一步:图形验证码接口 1.使用第三方的验证码生成工具Kaptcha https://github.com/penggle/kaptcha @Configuration public class KaptchaImageCodeConfig { @Bean public DefaultKaptcha getDefaultKaptcha(){ DefaultKaptcha defaultKaptcha = new Defa

钟健的博客 5万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

spring cloud 引入图形验证码kaptcha

1. 首先引入jar包,用于生成图形验证码 不引入第二个jar包会报错,java.lang.NoClassDefFoundError:com/jhlabs/image/RippleFilter <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptc...

lvhao2813的博客 1920

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Sping Boot整合EasyCaptcha(图形验证码)

JAVA引入第三方工具, 生成图形验证码,如下效果: 添加依赖 <dependencies> <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>1.6.2</version> </dependency> &.

夕四 1000

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java项目-----图形验证码登陆实现

图形验证码实现,原理解释

red_Apple_3_11的博客 829

魔方财务图形验证码出错解决方法

魔方财务图形验证码出错解决方法

qq_54707520的博客 537

PHP通过GD库实现验证码功能示例

yzm.php <?php //开启会话 session_start(); //创建画布 $image=imagecreatetruecolor(100,30); //背景颜色 $bgcolor=imagecolorallocate($image,255,255,255); imagefill($image,10,10,$bgcolor); ...

422

[记录] java 验证码生成工具 EasyCaptcha

依赖 <dependencies> <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>1.6.2</version> </dependency> </dependencies> 使用方法 2.

weixin_43867432的博客 460

mvc图片验证码的实现

1.在pom文件中加载验证码依赖 <!--验证码依赖--> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> 2.在a...

weixin_44577106的博客 357

问题列表

1、Xmanager Enterprise工具      学习原因:现网使用了Xmanager Enterprise工具登陆服务器,这种带图形的登录终端登录时会自动设置DISPLAY这个环境变量,这个会导致验证码显示不出   2、...

Sun 138

【TongWeb7】关闭控制台,关闭验证码

status的值由started改为stopped。

bjtongtech的博客 55
上一篇: ASP.NETURL地址防注入过滤问题
下一篇: 使用ashx一般处理程序,读取不到Session的问题
dcli98004
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值