使用说明
支持WebForm以及Asp.Net Mvc构建验证码
Nuget:Install-Package MasterChief.DotNet.Infrastructure.VerifyCode
欢迎Star,欢迎Issues;
如何使用
自定义验证码样式,只需要实现ValidateCodeType抽象类即可
/// <summary> /// 图片验证码抽象类 /// </summary> public abstract class ValidateCodeType { #region Methods /// <summary> /// 创建验证码抽象方法 /// </summary> /// <param name="validataCode">验证code</param> /// <returns>Byte数组</returns> public abstract byte[] CreateImage(out string validataCode); #endregion Methods #region Constructors #endregion Constructors #region Properties /// <summary> /// 验证码类型名称 /// </summary> public abstract string Name { get; } /// <summary> /// 验证码Tooltip /// </summary> public virtual string Tip => "请输入图片中的字符"; /// <summary> /// 类型名称 /// </summary> public string Type => GetType().Name; #endregion Properties }
在WebForm使用说明
新建一般处理程序
/// <summary> /// WebFormVerifyCodeHandler 的摘要说明 /// </summary> public class WebFormVerifyCodeHandler : VerifyCodeHandler, IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { var validateType = context.Request.Params["style"]; var buffer = Createva lidateCode(validateType); context.Response.ClearContent(); context.Response.ContentType = MimeTypes.ImageGif; context.Response.BinaryWrite(buffer); } public bool IsReusable => false; public override void OnValidateCodeCreated(HttpContext context, string validateCode) { context.Session["validateCode"] = validateCode; } public override byte[] Createva lidateCode(string style) { style = style?.Trim(); ValidateCodeType createCode; switch (style) { case "type1": createCode = new ValidateCode_Style1(); break; default: createCode = new ValidateCode_Style1(); break; } var buffer = createCode.CreateImage(out var validateCode); OnValidateCodeCreated(HttpContext.Current, validateCode); return buffer; } }
前端页面调用
<body> <form runat="server"> <div class="row"> <div class="col-md-8"> <section id="loginForm"> <div class="form-horizontal"> <h4>Use a local account to log in.</h4> <hr /> <asp:PlaceHolder runat="server" ID="ErrorMessage" Visible="false"> <p class="text-danger"> <asp:Literal runat="server" ID="FailureText" /> </p> </asp:PlaceHolder> <div class="form-group"> <asp:Label runat="server" AssociatedControlID="Email" CssClass="col-md-2 control-label">Email</asp:Label> <div class="col-md-10"> <asp:TextBox runat="server" ID="Email" CssClass="form-control" TextMode="Email" /> <asp:RequiredFieldValidator runat="server" ControlToValidate="Email" CssClass="text-danger" ErrorMessage="The email field is required." /> </div> </div> <div class="for