驗(yàn)證碼提供方
立即下載Kendo UI for jQuery
本文解釋了如何為Kendo UI Captcha設(shè)置服務(wù)端提供者,提供程序通過(guò)幫助程序類和方法生成并驗(yàn)證驗(yàn)證碼。
下面的列表提供了關(guān)于重置、音頻和驗(yàn)證操作的默認(rèn)請(qǐng)求和響應(yīng)的信息。
-
reset——向服務(wù)器發(fā)出GET請(qǐng)求以生成新的Captcha圖像,響應(yīng)包含新的驗(yàn)證碼圖像(在下面的代碼片段中—一個(gè)返回新圖像的端點(diǎn))和captchald。
{captcha: "/kendo-ui-dev/captcha/image?captchaid=36967dc7-0ae1-4175-9bb7-9d7f34409889", captchaId: "36967dc7-0ae1-4175-9bb7-9d7f34409889"}
-
audio——發(fā)出一個(gè)包含驗(yàn)證碼的GET請(qǐng)求,來(lái)自服務(wù)器的響應(yīng)不包含任何參數(shù)而是驗(yàn)證碼圖像的音頻表示。
-
validate——生成一個(gè)包含captchald和用戶在輸入字段中鍵入的文本的GET請(qǐng)求,如果輸入文本與圖像文本匹配則響應(yīng)為真,如果輸入文本與圖像文本不匹配則響應(yīng)為假。
設(shè)置
服務(wù)端Kendo UI Captcha提供程序與Telerik.Web .Captcha NuGet包一起提供。
安裝Telerik.Web.Captcha NuGet包:
- 右鍵單擊項(xiàng)目并選擇Manage NuGet Packages。
- 確保私有Telerik UI NuGet已配置。
- 搜索并安裝Telerik.Web.Captcha NuGet包。
在c#后端文件或控制器中,添加對(duì)以下命名空間的引用:
using System; using System.Drawing.Imaging; using System.IO; using System.Web.Mvc; using Telerik.Web.Captcha;
下面的代碼片段顯示了控制器的基本設(shè)置和驗(yàn)證碼的必要端點(diǎn):
using System.Drawing.Imaging; using System.IO; using System.Web.Mvc; using Telerik.Web.Captcha; namespace Kendo.Controllers { public class CaptchaController : Controller { public ActionResult Reset() { CaptchaImage newCaptcha = CaptchaHelper.GetNewCaptcha(); Session["captcha" + newCaptcha.UniqueId] = newCaptcha; return Json(new { captcha = Url.Action("image", "captcha", new { captchaId = newCaptcha.UniqueId }), captchaId = newCaptcha.UniqueId }, JsonRequestBehavior.AllowGet); } public ActionResult Image(string captchaId) { CaptchaImage captcha = (CaptchaImage)Session["captcha" + captchaId]; var image = CaptchaHelper.RenderCaptcha(captcha); byte[] bmpBytes; using (MemoryStream ms = new MemoryStream()) { image.Save(ms, ImageFormat.Png); bmpBytes = ms.ToArray(); } return File(bmpBytes, "image/png"); } public ActionResult Audio(string captchaId) { CaptchaImage captcha = (CaptchaImage)Session["captcha" + captchaId]; byte[] bmpBytes; using (MemoryStream audio = CaptchaHelper.SpeakText(captcha)) { bmpBytes = audio.ToArray(); } return File(bmpBytes, "audio/wav"); } public ActionResult Validate(string captchaId, string captcha) { CaptchaImage captchaImage = (CaptchaImage)Session["captcha" + captchaId]; return Json(CaptchaHelper.Validate(captchaImage, captcha.ToUpperInvariant()), JsonRequestBehavior.AllowGet); } } }