如何在Play Framework 2.1.3中使用Captcha

时间:2013-08-31 16:12:08

标签: playframework captcha recaptcha

我正在Play Framework 2.1.3中编写一个博客引擎,我希望使用验证码或类似的东西来避免自动垃圾邮件。我找到了一些关于验证码的帮助,但这只适用于Play 1.x,它对我不起作用。请提供一些有关如何在Play 2.1.3中使用验证码的帮助。谢谢!

2 个答案:

答案 0 :(得分:7)

我确实试过Google的recaptcha,它有效,但它很糟糕(这很难读)。

我在Play framework 2.2.1中使用Java实现了一个简单的解决方案。

  1. 下载Kaptcha这是一个开源验证码包。将它放在lib文件夹中。

  2. Application.java 中实现验证码方法。

    public static Result captcha(){
        DefaultKaptcha captchaPro=new DefaultKaptcha();
        captchaPro.setConfig(new Config(new Properties()));
        String text=captchaPro.createText();
        Logger.debug("Captcha:"+text);//U can put the text in cache.
        BufferedImage img=captchaPro.createImage(text);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try{
            ImageIO.write(img, "jpg", baos);
            baos.flush();
        }catch(IOException e){
            Logger.debug(e.getMessage());
        }
        return ok(baos.toByteArray()).as("image/jpg");
    }
    
  3. 将路线添加到路线文件。访问http:// [yourhost]:[port] / captcha。

  4. GET     /captcha                    controllers.Application.captcha

答案 1 :(得分:2)

使用Google's recaptcha作为示例,您甚至可以找到short tutorial如何实现此功能(注意:我没有检查其有效性)