日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现

發(fā)布時間:2023/12/20 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文轉(zhuǎn)自:http://www.cnblogs.com/yuangang/p/6000460.html

目錄索引 

?

【無私分享:ASP.NET CORE 項目實戰(zhàn)】目錄索引

?

簡介

?

  

  很長時間沒有來更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其實已經(jīng)完成了一個框架了,并且正在準(zhǔn)備在生產(chǎn)環(huán)境中試用,但是很多東西也是出于自己理解的膚淺和技術(shù)的不斷更新,經(jīng)常變動,所以,如果自己還沒有完全搞好,就來寫博客,反復(fù)的修正,可能會誤導(dǎo)一些新手朋友。

  如果有正在研究Core的朋友,可以大家一起交流下。

?

?

驗證碼  

  

  相信很多朋友跟我一樣,圖形驗證碼成為了 Core 的一個絆腳石。

?

  System.Drawing.Primitives 這是官方的一個Drawing庫,但是沒有Bitmap、Graphics等很多東西,所以這個做圖形驗證碼基本Pass了。

?

  ? ?CoreCompat.System.Drawing 這個是一個第三方的,使用了mono的System.Drawing實現(xiàn),只要安裝了之前使用System.Drawing的代碼完全不用修改,也支持描畫驗證碼等描畫類的功能。如果需要linux或osx支持,可以安裝runtime.linux.CoreCompat.System.Drawing和runtime.osx.10.10-x64.CoreCompat.System.Drawing。(地址:https://github.com/CoreCompat/CoreCompat),基本大家都是在用這個吧,這個在Windows下是沒有任何問題的,在Linux上一直沒有成功,也不知道是自己編譯的問題還是什么問題。

?

?

?  zkweb.system.drawing 這個也是第三方的,從mono的System.Drawing修改得來的。過程比較詳細(xì),也實現(xiàn)了。所以把這個的使用跟大家分享一下。

?

  這個類庫和CoreCompat的不同點如下

?

    • 沒有使用強名稱,CoreCompat為了讓程序集名稱一樣使用了一個偽造的簽名,但是導(dǎo)致Asp.Net和Owin等會檢查簽名的舊項目啟動失敗
    • CoreCompat的項目如果直接下載編譯會出現(xiàn)100多個錯誤,大多是類型找不到的錯誤,我也不知道作者是怎么編譯過去的 這個項目從mono 4.6.1.13復(fù)制了所有需要的文件并修改,直接下載編譯就可以通過
    • 可以使用dotnet test跑單元測試,目前通過率約為80%
    • 實際在linux上測試過并且給出了各個發(fā)行版安裝libgdiplus的命令,目前已測試不引用System.Drawing.Primitive,因為System.Drawing.Primitive在.Net Framework下同時引用了原來的System.Drawing,有可能導(dǎo)致編譯時類型沖突(實測只有警告)
      • Ubuntu Server 16.04 LTS 64bit
      • Fedora 24 64bit
      • CentOS 7.2 64bit

?

?

?

Zkweb.system.drawing

  首先通過Nuget:?Install-Package ZKWeb.System.Drawing 添加 引用

?  

?

簡單的圖形驗證碼生成:

?

  

1 public class VierificationCodeServices 2 { 3 /// <summary> 4 /// 該方法用于生成指定位數(shù)的隨機數(shù) 5 /// </summary> 6 /// <param name="VcodeNum">參數(shù)是隨機數(shù)的位數(shù)</param> 7 /// <returns>返回一個隨機數(shù)字符串</returns> 8 private string RndNum(int VcodeNum) 9 { 10 //驗證碼可以顯示的字符集合 11 string Vchar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p" + 12 ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q" + 13 ",R,S,T,U,V,W,X,Y,Z"; 14 string[] VcArray = Vchar.Split(new Char[] { ',' });//拆分成數(shù)組 15 string code = "";//產(chǎn)生的隨機數(shù) 16 int temp = -1;//記錄上次隨機數(shù)值,盡量避避免生產(chǎn)幾個一樣的隨機數(shù) 17 18 Random rand = new Random(); 19 //采用一個簡單的算法以保證生成隨機數(shù)的不同 20 for (int i = 1; i < VcodeNum + 1; i++) 21 { 22 if (temp != -1) 23 { 24 rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));//初始化隨機類 25 } 26 int t = rand.Next(61);//獲取隨機數(shù) 27 if (temp != -1 && temp == t) 28 { 29 return RndNum(VcodeNum);//如果獲取的隨機數(shù)重復(fù),則遞歸調(diào)用 30 } 31 temp = t;//把本次產(chǎn)生的隨機數(shù)記錄起來 32 code += VcArray[t];//隨機數(shù)的位數(shù)加一 33 } 34 return code; 35 } 36 37 /// <summary> 38 /// 該方法是將生成的隨機數(shù)寫入圖像文件 39 /// </summary> 40 /// <param name="code">code是一個隨機數(shù)</param> 41 /// <param name="numbers">生成位數(shù)(默認(rèn)4位)</param> 42 public MemoryStream Create(out string code, int numbers = 4) 43 { 44 code = RndNum(numbers); 45 Bitmap Img = null; 46 Graphics g = null; 47 MemoryStream ms = null; 48 Random random = new Random(); 49 //驗證碼顏色集合 50 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; 51 52 //驗證碼字體集合 53 string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋體" }; 54 55 56 //定義圖像的大小,生成圖像的實例 57 Img = new Bitmap((int)code.Length * 18, 32); 58 59 g = Graphics.FromImage(Img);//從Img對象生成新的Graphics對象 60 61 g.Clear(Color.White);//背景設(shè)為白色 62 63 //在隨機位置畫背景點 64 for (int i = 0; i < 100; i++) 65 { 66 int x = random.Next(Img.Width); 67 int y = random.Next(Img.Height); 68 g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); 69 } 70 //驗證碼繪制在g中 71

轉(zhuǎn)載于:https://www.cnblogs.com/freeliver54/p/6278797.html

總結(jié)

以上是生活随笔為你收集整理的[转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美一区二区三区在线看蜜臀 | 久久久久亚洲精品系列色欲 | 久久精品噜噜噜成人88aⅴ | 国产精品黄网站 | 性色在线视频 | 欧美精品1区2区3区 精品成人一区 | 在线看欧美| 极品美女无套呻吟啪啪 | 欧美三级视频 | 农村少妇久久久久久久 | 制服丝袜在线第一页 | 国产乱码久久久久 | 99色综合 | 亚洲国产精品综合 | 国产91精品ai换脸 | 男女在线免费观看 | 玖玖综合网 | 色老头在线视频 | 国产亚洲精久久久久久无码苍井空 | 日日干夜夜爱 | mm131丰满少妇人体欣赏图 | 久久99国产精品久久99 | 亚洲a视频在线观看 | 日本a一级片 | 日本aa视频| 亚洲第一香蕉网 | 日本中文字幕在线看 | 波多野吉衣一二三区乱码 | 欧美精品一区二区三区四区五区 | 一本大道综合伊人精品热热 | 久久发布国产伦子伦精品 | 欧美极品少妇xxxxⅹ免费视频 | 国产精品无码永久免费不卡 | 三浦理惠子av在线播放 | 永久免费视频网站 | 欧美亚洲图片小说 | 亚洲少妇毛片 | 亚洲自拍偷拍视频 | 欧美日韩五区 | 国产又色又爽无遮挡免费动态图 | 天天看天天摸天天操 | 久草加勒比 | 国产激情无码一区二区 | 99亚洲欲妇 | 国产91精品看黄网站在线观看 | 色老头av | 9999精品视频 | 波多野一区二区三区 | 亚洲区欧美 | 婷婷五月花 | 巨胸喷奶水www久久久免费动漫 | 18国产免费视频 | 中文字幕人妻无码系列第三区 | 色接久久| 日本黄色不卡 | 欧美精品99久久久 | 天天干网址 | 正在播放adn156松下纱荣子 | 国产欧美日韩综合精品一区二区三区 | 中国一级黄色 | 一区二区 中文字幕 | 国产精品成人69xxx免费视频 | 神马午夜场| 免费av黄色 | 拔萝卜91| 春色激情 | 欧美一级黄视频 | 免费黄色美女网站 | 午夜伦理影院 | 天天夜夜爽 | 福利在线电影 | 国产精品扒开腿做爽爽 | 欧美亚洲综合在线 | 精品三级在线 | 中文字幕观看在线 | 91涩漫成人官网入口 | 亚洲一区二区色 | 久操资源网 | 美女三级网站 | 成人一级黄色 | 国产污污网站 | 午夜偷拍视频 | 国产麻豆乱码精品一区二区三区 | 久色网 | 黄色片视频免费在线观看 | 国产社区在线 | av官网| 91亚洲专区| 国产精品美女久久久久 | 蜜桃视频在线网站 | 一卡二卡国产 | 欧美一级黄色大片 | 亚洲成av人片 | 草av在线| 国产一区免费在线 | 欧美一级性 | 西西44rtwww国产精品 | 精品国产乱码久久久久久牛牛 | 人人爱人人澡 |