2016-09-01 1 views
1

Я хочу использовать проверку капчи для моей страницы входа в LoginController я написалMVC Captcha и сессия отличаются

[HttpGet] 
     [OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] // This is for output cache false 
     public FileResult GetCaptchaImage() 
     { 
      CaptchaRandomImage CI = new CaptchaRandomImage(); 
      this.Session["CaptchaImageText"] = CI.GetRandomString(5); // here 5 means I want to get 5 char long captcha 
      //CI.GenerateImage(this.Session["CaptchaImageText"].ToString(), 300, 75); 
      // Or We can use another one for get custom color Captcha Image 
      CI.GenerateImage(this.Session["CaptchaImageText"].ToString(), 300, 75, Color.DarkGray, Color.White); 
      MemoryStream stream = new MemoryStream(); 
      CI.Image.Save(stream, ImageFormat.Png); 
      stream.Seek(0, SeekOrigin.Begin); 
      return new FileStreamResult(stream, "image/png"); 
     } 

в HTML части я написал

<span class="input-group-addon"style="width: 20%; background: transparent;border: none"><img src="@Url.Action("GetCaptchaImage","Login")" style="width:80px; height: 45px;margin-left: -12px" /></span> 

Проблема заключается в том, что сессия и изображения не являются равный, потому что, когда загружается страница входа в систему, во-первых, captcha работает, а затем работает страница, поэтому всегда сессия хранит предыдущий код изображения. Как я могу решить эту проблему? Спасибо

ответ

0

Сначала начинается wiev, затем начинается другой, ваш код прав, но u должен делать это в контроллере, а не в поле зрения, u должен добавить один параметр к вашему сообщению, который является authcode, затем в контроллере u может проверьте и сделайте.

Смежные вопросы