我想如何在一个会话中生成彼此不同的验证码?
例如: 我有一个申请表,在用户可以进入下一步之前有一个验证码。问题是,如果我在新的Windows选项卡中打开另一个相同的申请表,它将生成与第一个申请表相同的验证码。我需要的是不同的验证码值。
帮我解决这个问题,请... 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 :(得分:0)
将随机局部变量更改为成员字段。 e.g。
public partial class captchapage : UnsecuredLayoutsPageBase
{
private Random random = new Random();
}