系统网站建设方案,推广普通话活动,长沙注册公司流程与费用,电子商务网站预算开源博客项目Blog中的后台管理登录界面中支持输入验证码#xff08;如下图所示#xff09;#xff0c;本文学习并记录项目中验证码的生成及调用方式。 博客项目中调用VerifyCode类生成验证码#xff0c;该类位于App.Framwork项目中#xff0c;命名空间为App.Framwork… 开源博客项目Blog中的后台管理登录界面中支持输入验证码如下图所示本文学习并记录项目中验证码的生成及调用方式。 博客项目中调用VerifyCode类生成验证码该类位于App.Framwork项目中命名空间为App.Framwork.Generate。VerifyCode类主要包括十几种参数设置两种验证码生成方式随机字符串问题型。主要参数设置如下所示
序号名称类型说明1SetLengthint主要用于随机字符串型的验证码设置随机字符串的长度默认值为42SetVerifyCodeTextstring保存生成的验证码3SetAddLowerLetterbool设置验证码中是否包含小写字母默认值为true4SetAddUpperLetterbool设置验证码中是否包含大写字母默认值为true5SetFontSizeint设置验证码的字体大小用于生成验证码图片默认值为186SetFontColorColor设置验证码的字体颜色用于生成验证码图片默认值为蓝色7SetFontFamilystring设置验证码的字体名称用于生成验证码图片默认值为Verdana8SetBackgroundColorColor设置验证码图片的背景色用于生成验证码图片默认值为AliceBlue9SetIsBackgroundLinebool设置验证码图片中是否包含线条以便提升识别难度10SetForeNoisePointCountint设置验证码图片中的前景噪点数量以便提升识别难度默认值为2但实际从代码来看增加的比设置的多11SetRandomAngleint设置验证码图片中单个字符的最大旋转角度主要用于随机字符串型的验证码默认值为4012SetIsRandomColorbool设置是否随机生成验证码的字体颜色默认值为true效果是每次生成的验证码图片中的字体颜色都是随机生成13SetWithint设置验证码图片的宽度14SetHeightint设置验证码图片的高度15VerifyCodeResultstring保存问题型验证码的答案 随机字符串型验证码的生成函数为GetVerifyCodeText其生成步骤如下 1创建字符池首先加入1-9的数字再根据设置分别加入大写字母和小写字母这里特地将O和o去掉了避免难以识别 2根据验证码长度逐一从字符池中随机取字符用后即弃使用StringBuilder实现用后直接移除指定位置的内容即可最后返回完整的验证码字符串。 问题型验证码的生成函数为GetQuestion其生成步骤如下 1如果提供有问答对集合即函数输入参数questionList默认为null则从集合中随机抽取一组问答对并返回 2如果没有提供问答对集合则随机生成100以内的加减乘除算式并保存计算结果然后返回算式和结果的问答对。 验证码图片的生成函数为GetVerifyCodeImage其生成步骤如下 1创建空图片图片高度大致为1.6倍字体大小宽度为验证码长度倍字体大小填充背景色 2增加前景噪点噪点数量为图片宽度乘以SetForeNoisePointCount绘制方式为将图片随机像素点位置的颜色换为字体颜色 3增加背景噪点分为两部分首先是噪点数量为2倍图片宽度绘制方式为在图片随机位置绘制宽和高均为1的矩形。接着按设置增加干扰线条绘制方式是根据随机生成两侧坐标绘制线条 4从左向右逐个绘制验证码的字符如果需要旋转字符则随机生成旋转角度旋转坐标后再绘制字符最后返回图片内容 博客项目中LoginController类调用验证码生成类该类位于App.Hosting项目中命名空间为App.Hosting.Areas.Main.Controllers具体调用函数为ValidateCode函数返回验证码图片并将验证码内容放在HttpContext.Session中返回前端调用页码则是Index.cshtml。 从上面的分析可以看出开源博客项目Blog中提供的验证码生成类相对独立实现逻辑清晰易懂扩展起来也比较方便能够按需放在其它项目或程序中。
参考文献 [1]https://gitee.com/miss_you/Blog [2]https://www.donet5.com/Home/Doc