Esempio n. 1
0
 internal MvcCaptchaImage(MvcCaptchaOptions options)
 {
     CaptchaOptions = options;
     UniqueId = Guid.NewGuid().ToString("N");
     _rand = new Random();
     //Text = GenerateRandomText();
 }
Esempio n. 2
0
 static string CreateImgTag(string url, MvcCaptchaOptions options, string id)
 {
     var sb = new StringBuilder("<a href=\"javascript:;\" title=\"刷新图片\"><img src=\"");
     sb.Append(url);
     sb.Append("\" alt=\"刷新图片\" width=\"");
     sb.Append(options.Width);
     sb.Append("\" height=\"");
     sb.Append(options.Height);
     if (!string.IsNullOrEmpty(id))
         sb.Append("\" id=\"").Append(id);
     sb.Append("\" border=\"0\"/></a><!--<a href=\"javascript:_reloadMvcCaptchaImage()\">").Append(options.ReloadLinkText).Append("</a>-->");
     return sb.ToString();
 }
Esempio n. 3
0
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpContext context = HttpContext.Current;

        MvcCaptchaOptions options = new MvcCaptchaOptions();
        var image = new MvcCaptchaImage(options);

        image.ResetText();
        HttpContext.Current.Session.Add("captcha", image.Text);

        using (var b = image.RenderImage())
        {
            b.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
        }

        context.Response.Cache.SetNoStore();
        context.Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
        context.Response.ContentType       = "image/gif";
        context.Response.StatusCode        = 200;
        context.Response.StatusDescription = "OK";
        context.ApplicationInstance.CompleteRequest();
    }
Esempio n. 4
0
 private static MvcHtmlString MvcCaptcha(this HtmlHelper helper, string actionName, string controllerName, MvcCaptchaOptions options)
 {
     if (options == null)
         options = new MvcCaptchaOptions();
     var image = new MvcCaptchaImage(options);
     HttpContext.Current.Session.Add(
         image.UniqueId,
         image);
     var url = new UrlHelper(helper.ViewContext.RequestContext);
     var sb = new StringBuilder(1500);
     sb.Append("<input type=\"hidden\" name=\"" + options.CaptchaImageContainerGUId + "\" id=\"" + options.CaptchaImageContainerGUId + "\"");
     if (options.DelayLoad)
     {
         sb.Append("/><script language=\"javascript\" type=\"text/javascript\">if (typeof (jQuery) == \"undefined\") { alert(\"jQuery脚本库未加载,请检查!\"); }");
         sb.Append("var _mvcCaptchaPrevGuid = null,_mvcCaptchaImgLoaded = false;function _loadMvcCaptchaImage(){");
         sb.Append("if(!_mvcCaptchaImgLoaded){$.ajax({type:'GET',url:'");
         sb.Append(url.Action("MvcCaptchaLoader", "_MvcCaptcha", new RouteValueDictionary { { "area", null } }));
         sb.Append("?'+_mvcCaptchaPrevGuid,global:false,success:function(data){_mvcCaptchaImgLoaded=true;");
         sb.Append("$(\"#" + options.CaptchaImageContainerGUId + "\").val(data);_mvcCaptchaPrevGuid=data;$(\"#");
         sb.Append(options.CaptchaImageContainerId).Append("\").html('");
         sb.Append(CreateImgTag(url.Action(actionName, controllerName, new RouteValueDictionary { { "area", null } }) + "?'+data+'", options, null));
         sb.Append("');}});} };function _reloadMvcCaptchaImage(){_mvcCaptchaImgLoaded=false;_loadMvcCaptchaImage();};$(function(){");
         sb.Append("if($(\"#").Append(options.ValidationInputBoxId).Append("\").length==0){alert(\"未能找到验证码输入文本框,请检查ValidationInputBoxId属性是否设置正确!\");}");
         sb.Append("if($(\"#").Append(options.CaptchaImageContainerId).Append("\").length==0){alert(\"未能找到验证码图片父容器,请检查CaptchaImageContainerId属性是否设置正确!\");}");
         sb.Append("$(\"#").Append(options.ValidationInputBoxId);
         sb.Append("\").bind(\"focus\",_loadMvcCaptchaImage)});</script>");
     }
     else
     {
         sb.AppendFormat(" value=\"{0}\" />", image.UniqueId);
         sb.Append(CreateImgTag(url.Action(actionName, controllerName, new RouteValueDictionary { { "area", null } }) + "?" + image.UniqueId, options, image.UniqueId));
         sb.Append("<script language=\"javascript\" type=\"text/javascript\">$(\"#" + image.UniqueId + "\").live(\"click\",function(){");
         //sb.Append(image.UniqueId);
         sb.Append("var slen=$(this).attr(\"src\").length;var cobj=$(this).attr(\"src\").indexOf(\"&\");var osrc=$(this).attr(\"src\").substr(0,slen)+\"&" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + "\";$(this).attr(\"src\",osrc);return false;});</script>");
     }
     return MvcHtmlString.Create(sb.ToString());
 }
Esempio n. 5
0
        public ActionResult MvcCaptchaLoader()
        {
            string prevGuid = Request.ServerVariables["Query_String"];
            if (!string.IsNullOrEmpty(prevGuid))
                HttpContext.Session.Remove(prevGuid);
            var options = new MvcCaptchaOptions();
            var config = MvcCaptchaConfigSection.GetConfig();
            if (config != null)
            {
                options.TextChars = config.TextChars;
                options.TextLength = config.TextLength;
                options.FontWarp = config.FontWarp;
                options.BackgroundNoise = config.BackgroundNoise;
                options.LineNoise = config.LineNoise;
            }

            var image = new MvcCaptchaImage(options);
            HttpContext.Session.Add(
                 image.UniqueId,
                 image);
            HttpContext.Response.Cache.SetNoStore();
            HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            return Content(image.UniqueId);
        }
Esempio n. 6
0
 public static MvcHtmlString MvcCaptcha(this HtmlHelper helper, MvcCaptchaOptions options)
 {
     return MvcCaptcha(helper, "MvcCaptchaImage", "_MvcCaptcha", options);
 }