rolling back captcha fix

This commit is contained in:
Pablo 2010-11-24 01:11:31 +01:00
parent f63fcae531
commit 63fe8c5493

View File

@ -22,7 +22,6 @@ package com.wisemapping.controller;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -46,10 +45,9 @@ public class CaptchaController
throws Exception throws Exception
{ {
response.setHeader("Cache-Control", "no-store"); byte[] captchaChallengeAsJpeg;
response.setHeader("Pragma", "no-cache"); // the output stream to render the captcha image as jpeg into
response.setDateHeader("Expires", 0); final ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
response.setContentType("image/png");
// get the session id that will identify the generated captcha. // get the session id that will identify the generated captcha.
//the same id must be used to validate the response, the session id is a good candidate! //the same id must be used to validate the response, the session id is a good candidate!
@ -58,9 +56,19 @@ public class CaptchaController
// call the ImageCaptchaService getChallenge method // call the ImageCaptchaService getChallenge method
final BufferedImage challenge = captchaService.getImageChallengeForID(captchaId,request.getLocale()); final BufferedImage challenge = captchaService.getImageChallengeForID(captchaId,request.getLocale());
// a jpeg encoder
final JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);
jpegEncoder.encode(challenge);
captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
// flush it in the response // flush it in the response
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
final ServletOutputStream responseOutputStream = response.getOutputStream(); final ServletOutputStream responseOutputStream = response.getOutputStream();
ImageIO.write(challenge, "png", responseOutputStream); responseOutputStream.write(captchaChallengeAsJpeg);
responseOutputStream.flush(); responseOutputStream.flush();
responseOutputStream.close(); responseOutputStream.close();
return null; return null;