3

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

4

2 回答 2

7

我确实尝试了谷歌的recaptcha,它有效,但它很糟糕(很难阅读)。

我在 Play 框架 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 。

GET     /captcha                    controllers.Application.captcha
于 2013-11-16T06:06:15.853 回答
2

谷歌的recaptcha为例,你甚至可以找到一个简短的教程如何实现它(注意:我没有检查它的有效性)

于 2013-08-31T21:20:19.593 回答