public IHttpActionResult Check(string name, [FromBody] CaptchaInfo captchaInfo)
        {
            try
            {
                var code = CookieUtils.GetCookie("SS-" + name);

                if (string.IsNullOrEmpty(code) || CacheUtils.Exists($"SiteServer.API.Controllers.V1.CaptchaController.{code}"))
                {
                    return(BadRequest("验证码已超时,请点击刷新验证码!"));
                }

                CookieUtils.Erase("SS-" + name);
                CacheUtils.InsertMinutes($"SiteServer.API.Controllers.V1.CaptchaController.{code}", true, 10);

                if (!StringUtils.EqualsIgnoreCase(code, captchaInfo.Captcha))
                {
                    return(BadRequest("验证码不正确,请重新输入!"));
                }

                return(Ok(new
                {
                    Value = true
                }));
            }
            catch (Exception ex)
            {
                LogUtils.AddErrorLog(ex);
                return(InternalServerError(ex));
            }
        }
Ejemplo n.º 2
0
        public IHttpActionResult Check([FromBody] CheckRequest request)
        {
            try
            {
                var code = CookieUtils.GetCookie(CookieName);

                if (string.IsNullOrEmpty(code) || CacheUtils.Exists($"{CookieName}.{code}"))
                {
                    return(BadRequest("验证码已超时,请点击刷新验证码!"));
                }

                CookieUtils.Erase(CookieName);
                CacheUtils.InsertMinutes($"{CookieName}.{code}", true, 10);

                if (!StringUtils.EqualsIgnoreCase(code, request.Captcha))
                {
                    return(BadRequest("验证码不正确,请重新输入!"));
                }

                return(Ok(new
                {
                    Value = true
                }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Ejemplo n.º 3
0
        public void Get(string name)
        {
            var response = HttpContext.Current.Response;

            var code = VcManager.CreateValidateCode();

            if (CacheUtils.Exists($"SiteServer.API.Controllers.V1.CaptchaController.{code}"))
            {
                code = VcManager.CreateValidateCode();
            }

            CookieUtils.SetCookie("SS-" + name, code, DateTime.Now.AddMinutes(10));

            response.BufferOutput = true;                                //特别注意
            response.Cache.SetExpires(DateTime.Now.AddMilliseconds(-1)); //特别注意
            response.Cache.SetCacheability(HttpCacheability.NoCache);    //特别注意
            response.AppendHeader("Pragma", "No-Cache");                 //特别注意
            response.ContentType = "image/png";

            var validateimage = new Bitmap(130, 53, PixelFormat.Format32bppRgb);

            var r      = new Random();
            var colors = Colors[r.Next(0, 5)];

            var g = Graphics.FromImage(validateimage);

            g.FillRectangle(new SolidBrush(Color.FromArgb(240, 243, 248)), 0, 0, 200, 200);                                                          //矩形框
            g.DrawString(code, new Font(FontFamily.GenericSerif, 28, FontStyle.Bold | FontStyle.Italic), new SolidBrush(colors), new PointF(14, 3)); //字体/颜色

            var random = new Random();

            for (var i = 0; i < 25; i++)
            {
                var x1 = random.Next(validateimage.Width);
                var x2 = random.Next(validateimage.Width);
                var y1 = random.Next(validateimage.Height);
                var y2 = random.Next(validateimage.Height);

                g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
            }

            for (var i = 0; i < 100; i++)
            {
                var x = random.Next(validateimage.Width);
                var y = random.Next(validateimage.Height);

                validateimage.SetPixel(x, y, Color.FromArgb(random.Next()));
            }

            g.Save();
            var ms = new MemoryStream();

            validateimage.Save(ms, ImageFormat.Png);
            response.ClearContent();
            response.BinaryWrite(ms.ToArray());
            response.End();
        }
        public IHttpActionResult Insert()
        {
            try
            {
                var request = Context.AuthenticatedRequest;
                var siteId  = request.GetPostInt("siteId");
                if (!request.IsAdminLoggin)
                {
                    return(Unauthorized());
                }

                var authCode = request.GetPostString("authCode");
                var code     = CookieUtils.GetCookie(CaptchaController.CookieName);
                if (string.IsNullOrEmpty(code) || CacheUtils.Exists($"{CaptchaController.CookieName}.{code}"))
                {
                    return(BadRequest("验证码已超时,请点击刷新验证码!"));
                }
                CookieUtils.Erase(CaptchaController.CookieName);
                CacheUtils.InsertMinutes($"{CaptchaController.CookieName}.{code}", true, 10);
                if (!StringUtils.EqualsIgnoreCase(code, authCode))
                {
                    return(BadRequest("验证码不正确,请重新输入!"));
                }

                var categoryId     = request.GetPostInt("categoryId");
                var departmentId   = request.GetPostInt("departmentId");
                var categoryInfo   = CategoryManager.GetCategoryInfo(siteId, categoryId);
                var departmentInfo = DepartmentManager.GetDepartmentInfo(siteId, departmentId);

                var dataInfo = new DataInfo
                {
                    Id             = 0,
                    SiteId         = siteId,
                    AddDate        = DateTime.Now,
                    QueryCode      = StringUtils.GetShortGuid(true),
                    CategoryId     = categoryInfo?.Id ?? 0,
                    DepartmentId   = departmentInfo?.Id ?? 0,
                    IsCompleted    = false,
                    State          = DataState.New.Value,
                    DenyReason     = string.Empty,
                    RedoComment    = string.Empty,
                    ReplyContent   = string.Empty,
                    IsReplyFiles   = false,
                    ReplyDate      = DateTime.Now,
                    Name           = request.GetPostString("name"),
                    Gender         = request.GetPostString("gender"),
                    Phone          = request.GetPostString("phone"),
                    Email          = request.GetPostString("email"),
                    Address        = request.GetPostString("address"),
                    Zip            = request.GetPostString("zip"),
                    Title          = request.GetPostString("title"),
                    Content        = request.GetPostString("content"),
                    CategoryName   = categoryInfo == null ? string.Empty : categoryInfo.CategoryName,
                    DepartmentName = departmentInfo == null ? string.Empty : departmentInfo.DepartmentName
                };

                Main.DataRepository.Insert(dataInfo);

                return(Ok(new
                {
                    Value = dataInfo
                }));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }