2012-10-17 56 views
0

我想在一個會話中生成彼此不同的驗證碼?在一個會話中生成不同的驗證碼

例如: 我有一個應用程序表單,在用戶可以繼續下一步之前有一個驗證碼。問題是,如果我在新窗口選項卡中打開另一個相同的應用程序表單,它將生成與第一個應用程序表單相同的驗證碼。我需要的是不同的驗證碼值。

幫我解決這個問題,請... TQ

我使用asp.net。

這裏的示例代碼

來生成代碼

private string GenerateRandomCode() 
{ 
    string s = ""; 
    for (int i = 0; i < 6; i++) 
     s = String.Concat(s, random.Next(10).ToString()); 
    return s; 
} 

以生成驗證碼圖像

namespace OneStepContactMe.Layouts.OneStepContactMe 
{ 
    public partial class captchapage : UnsecuredLayoutsPageBase 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       if (Session["Map"] == null) 
       { 
        Session["Map"] = GenerateRandomCode();  
       } 
       // Create a CAPTCHA image using the text stored in the Session object. 
       CaptchaImage ci = new CaptchaImage(this.Session["Map"].ToString(), 200, 50, "Century Schoolbook"); 

       // Change the response headers to output a JPEG image. 
       this.Response.Clear(); 
       this.Response.ContentType = "image/jpeg"; 

       // Write the image to the response stream in JPEG format. 
       ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg); 

       // Dispose of the CAPTCHA image object. 
       ci.Dispose(); 
      } 
      else { 
      } 
     } 

     /// <summary> 
     /// generate random 6 digit 
     /// </summary> 
     /// <returns> string of 6 digits </returns> 
     private string GenerateRandomCode() 
     { 
      Random random = new Random(); 
      string s = ""; 
      for (int i = 0; i < 6; i++) 
       s = String.Concat(s, random.Next(10).ToString()); 
      return s; 
     } 

     //to allow anonymous access to this pages 
     protected override bool AllowAnonymousAccess 
     { 
      get 
      { 
       return true; 
      } 
     } 

     protected override void OnPreInit(EventArgs e) 
     { 
      base.OnPreInit(e); 
      this.MasterPageFile = "/_catalogs/masterpage/MyCorridor.MemberArea.v1.master"; 
     } 
    } 

回答

0

變化隨機局部變量成員字段。 例如

public partial class captchapage : UnsecuredLayoutsPageBase 
{ 
    private Random random = new Random(); 
} 
+0

雖然在總體上是好的建議,這不會幫助這裏:ASP.NET中的類重新創建爲每個請求,所以仍然會有一個新的'Random'爲每個請求。 – Rawling