加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

[Hei.Captcha] Asp.Net Core 跨平台验证码实现

发布时间:2022-09-26 15:30:02 所属栏目:Asp教程 来源:
导读:  说起来比较丢脸。我们有个手机的验证码发送逻辑需要使用验证码,这块本来项目里面就有验证码绘制逻辑,.Net Framework的,使用的包是System.Drawing,我把这验证码绘制逻辑复制到.Net Core的新项目引用对比包Syst
  说起来比较丢脸。我们有个手机的验证码发送逻辑需要使用验证码,这块本来项目里面就有验证码绘制逻辑,.Net Framework的,使用的包是System.Drawing,我把这验证码绘制逻辑复制到.Net Core的新项目引用对比包System.Drawing.Common,windows下面验证码正常,CentOs下面死活不能正常,像这样:
 
  (左边为CentOs运行结果,右为Windows)
 
  折腾了一天多放弃了,决定重新写。
 
  我看了市面上的各种验证码,使用第三方的,免费的都有很多限制,并随时有可能开始收费(用户量上去后就收费,俗称“养猪”);
 
  有些比较大平台的已经开始收费或者即将收费(无可厚非,不点名);
 
  视野有限,没有都一一了解到,如果有免费的,限制又比较少的,使用体验不错的第三方验证码,欢迎留言~~
 
  综上,我决定自己绘制
 
  选择图片绘制库
 
  GitHub上面我看到比较多星的是:
 
  SixLabors / ImageSharp
 
  dlemstra / Magick.NET
 
  mono / SkiaSharp
 
  综合考虑后选择了:ImageSharp
 
  官方文档:
 
  成果Hei.Captcha
 
  一个.net core,跨平台的验证码生成工具包,基于ImageSharp。
 
  中文泡泡验证码
 
  字母数字组合验证码
 
  表单Demo
 
  asp验证码_asp邮箱格式验证_asp.net mvc form验证
 
  使用
 
  Install-Package Hei.Captcha
  ///
 
  /// 泡泡中文验证码
  ///
 
  ///
  public IActionResult BubbleCode()
  {
      var code = _securityCode.GetRandomCnText(2);
      var imgbyte = _securityCode.GetBubbleCodeByte(code);
 
      return File(imgbyte, "image/png");
  }
 
  ///
 
  /// 数字字母组合验证码
  ///
 
  ///
  public IActionResult HybridCode()
  {
      var code = _securityCode.GetRandomEnDigitalText(4);
      var imgbyte = _securityCode.GetEnDigitalCodeByte(code);
 
      return File(imgbyte, "image/png");
  }
  高级
 
  参照Demo, 通过修改/丰富应用程序运行目录./fonts目录下的字体文件,生成更多不同字体组合的验证码。
 
  总结
 
  滑块验证码、点击选择验证码、轨迹验证码等的实现时间成本,技术要求都比较高,并且各种防破解上面可能也需要花很多时间。综合需求考虑选择了个性价比比较高的“土味”验证码绘制方案;
 
  本验证码我自己也没有去尝试去破解过,不知道破解难度,有兴趣的同学试试,能告诉我结果就最好了[比心]
 
  验证码肉眼辨认上面,可能稍难体验差了点。自己修改下泡泡的数量,绘制的参数改改,代码不多,都有备注。
 
  希望能帮到大家,也希望大家积极PRasp验证码,丰富验证码样式。
 

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!