2013-08-31 92 views
3

我在Play Framework 2.1.3中撰寫博客引擎,並且希望使用驗證碼或類似的東西來避免自動垃圾郵件。我找到了一些有關驗證碼的幫助,但是這僅僅適用於Play 1.x,並不適合我。請提供一些關於如何在Play 2.1.3中使用驗證碼的幫助。謝謝!如何在Play Framework中使用驗證碼2.1.3

+0

請描述你的努力,你要使用一些代碼或什麼驗證碼技術。 –

+1

我現在不是真的,因爲我還沒有使用任何驗證碼技術。我只是想解決,當有人在我的博客上發表評論時,他需要確認他是一個人。我想避免我的博客上的腳本/機器人發送垃圾評論。所以,我對任何想法都有所瞭解,有什麼可以幫助實現這一點。 – Tigi1991

回答

2

使用Google's recaptcha爲例,你甚至可以找到一個short tutorial如何實現這一點(注:我沒有檢查它的有效性)

+0

其實這是工作,所以謝謝你!但它使用的是scala,我寧願使用java。它在/ app/views中的ReCaptcha.scala中進行驗證碼驗證。我認爲這不是最好的做法,最好是在Application.java中進行驗證。我只是不現在如何改變代碼。我還在[github](https://github.com/fradev/play2-recaptcha)找到了一個插件,可能會做什麼工作,但它不起作用。有人使用這個插件或者知道像Play 2.1.x這樣的其他插件? – Tigi1991

7

我曾嘗試谷歌的驗證碼,它的工作,但它是可怕的(這是非常難以閱讀)。

我在Play framework 2.2.1中實現了一個使用Java的簡單解決方案。

  1. 下載Kaptcha這是一個開源的captcha包。將它放在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]:[端口]/captcha。

GET  /captcha     controllers.Application.captcha
相關問題