Ошибка при использовании плагина jcaptcha с grails 1.3.7 - PullRequest
0 голосов
/ 29 сентября 2011

Привет, я столкнулся со следующей ошибкой при попытке использовать плагин jcaptcha с grails 1.3.7.

org.codehaus.groovy.runtime.typehandling.GroovyCastException:
  Cannot cast object '{}' with class 'groovy.util.ConfigObject' to class 'com.octo.captcha.service.CaptchaService' due to:
  groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.octo.captcha.service.CaptchaService(groovy.util.ConfigObject)
    at org.grails.plugin.jcaptcha.JcaptchaService.getCaptchaService(JcaptchaService.groovy:42)
    at org.grails.plugin.jcaptcha.JcaptchaService$$FastClassByCGLIB$$98874858.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.grails.plugin.jcaptcha.JcaptchaService$$EnhancerByCGLIB$$468f85f9.getCaptchaService(<generated>)
    at org.grails.plugin.jcaptcha.JcaptchaService$getCaptchaService.call(Unknown Source)
    at org.grails.plugin.jcaptcha.JcaptchaController$_closure1.doCall(JcaptchaController.groovy:29)
    at org.grails.plugin.jcaptcha.JcaptchaController$_closure1.doCall(JcaptchaController.groovy)
    at java.lang.Thread.run(Thread.java:619)

Любые указатели на них будут очень полезны.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

jcaptchaService.validateResponse ожидает, что строка типа captcha1 (если вы назвали свою капчу в Config.groovy) в качестве первого аргумента для определения используемого экземпляра капчи.

Config.groovy Пример:

...
captchas {
   captcha1 = new GenericManageableCaptchaService(...)
}
...

для представления используйте капчу вот так:

<jcaptcha:jpeg name="captcha1" /> ...
<g:textField name="user_typed_captcha" value="" />

и в контроллере что-то вроде этого:

if(jcaptchaService.validateResponse("captcha1", session.id, params.user_typed_captcha)) {
   log.info("CAPTCHA WAS VALID!")
} else {
   log.info("CAPTCHA WAS NOT VALID!")
}

Это должно исправить вашу проблему, используя jcaptcha в контроллерах.

Для меня использование jcaptchaService в CommandObjects не сработало.Я думаю, причина была в том, что метод валидации по некоторым причинам вызывался дважды, что делало перехват недействительным.Я использовал Grails 1.3.7.

0 голосов
/ 03 октября 2011

При использовании JCaptcha с Grails вам необходимо «определить капчи»: это означает, что вы должны указать правила, в соответствии с которыми генерируются Jcaptchas.

Ваши капчи определены в вашем файле conf / Config.groovy:

jcaptchas {
    captcha1 = …
    captcha2 = …
}

Подробнее о том, как создать эти @ http://www.grails.org/JCaptcha+Plugin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...