zoukankan      html  css  js  c++  java
  • ASP.NET CORE MVC验证码

    1. 引入System.Drawing.Common nuget包;

    2. 生成验证码的代码:

    using System;
    using Microsoft.AspNetCore.Mvc;
    using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    
    namespace LearnIdentity.Controllers
    {
        public class YZMController : Controller
        {
            public IActionResult Index()
            {
                int codeW = 80;
                int codeH = 30;
                int fontSize = 16;
                string chkCode = string.Empty;
                Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.DarkBlue, Color.PaleGreen };
                string[] font = { "Times New Roman" };
                char[] character = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'd', 'e', 'f', 'h', 'k', 'm', 'n', 'r', 'x', 'y', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
                //生成验证码字符串
                Random rnd = new Random();
                for (int i = 0; i < 4; i++)
                {
                    chkCode += character[rnd.Next(character.Length)];
                }
                //写入Session用于验证码校验,可以对校验码进行加密,提高安全性
                //HttpContext.Session.Set<string>("verify_code", chkCode);
    
                //创建画布
                Bitmap bmp = new Bitmap(codeW, codeH);
                Graphics g = Graphics.FromImage(bmp);
                g.Clear(Color.Linen);
    
                //画噪线
                for (int i = 0; i < 6; i++)
                {
                    int x1 = rnd.Next(codeW);
                    int y1 = rnd.Next(codeH);
                    int x2 = rnd.Next(codeW);
                    int y2 = rnd.Next(codeH);
    
                    Color clr = color[rnd.Next(color.Length)];
                    g.DrawLine(new Pen(clr), x1, y1, x2, y2);
                }
                //画验证码
                for (int i = 0; i < chkCode.Length; i++)
                {
                    string fnt = font[rnd.Next(font.Length)];
                    Font ft = new Font(fnt, fontSize);
                    Color clr = color[rnd.Next(color.Length)];
                    g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 18, (float)0);
                }
                //将验证码写入图片内存流中,以image/png格式输出
                MemoryStream ms = new MemoryStream();
                try
                {
                    bmp.Save(ms, ImageFormat.Png);
                    return File(ms.ToArray(), "image/jpeg");
                }
                catch (Exception)
                {
                    return null;
                }
                finally
                {
                    g.Dispose();
                    bmp.Dispose();
                }
            }
        }
    }
  • 相关阅读:
    jquery
    实现元素垂直居中
    浏览器 标准模式和怪异模式
    cookie session ajax
    React props.children
    使用React.lazy报错Import in body of module; reorder to top import/first
    state 和 props 之间的区别
    Harbor打怪升级
    Centos7下安装yum工具
    正则表达式匹配两个特殊字符中间的内容(特殊字符不显示)
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878864.html
Copyright © 2011-2022 走看看