2012-10-09 1 views
0

asp.net에서 captcha 처리기를 실험하는 동안 문제가 발생했습니다. 어떤 도움도 받으실 수 있습니다. 세션에서 값을 저장하는 보안 문자 처리기

public void ProcessRequest(HttpContext context) 
{ 
    var text = generateText(); 
    using (var image = generateImage(text)) 
    { 
     context.Response.Clear(); 
     context.Response.ContentType = "image/jpeg"; 
     context.Session.Add("captcha", text); 
     image.Save(context.Response.OutputStream, ImageFormat.Jpeg); 
    } 
} 

다음 몇 가지 default.aspx에 우리가 넣어 :

<img src="<%=CaptchaImageUrl %>"/> 
<p><%=Context.Session["captcha"]%></p> 

우리는 보안 문자 이미지를 표시하고 세션에 저장된 보안 문자 값을 확인하고 싶은 것을 의미 우리는 이러한 핸들러를 상상해보십시오. 그러나 문제는 default.aspx에 현재 세션 값이 보안 문자 핸들러의 옆에 오래된되며,

<p><%=Context.Session["captcha"]%></p> 

는 항상 이전 보안 문자 값을 반환 할 것입니다. 제안 사항이 있으십니까?

답변

0

브라우저에서 이미지를 요청한 경우에만 세션에서 보안 문자를 저장합니다. 그러나 브라우저에서 이미지가 요청되기 전에 발생하는 페이지에 세션 값을 표시하고 있습니다.

페이지에서 이전 보안 문자를 볼 수있는 이유입니다.

이 문제를 해결하려면 generateText 페이지로 이동하여 페이지가이 값을 세션에 저장하도록하는 것이 좋습니다. 핸들러는 세션에서 값을 선택하고 이미지를 구성하여 렌더링합니다.