Hi, Not exactly, I think you are thinking of:
$captchaservice.isAnswerCorrect($sessionId, $answer)
Yes. I believe here sessionId is generated by the captcha service for each captcha displayed? Or is it something else? I'm asking because recaptcha generates a unque captchaId for each captcha it generates. Then you need to handover this captchaId + user's answer to the server to verify the answer.
while captchaName is the hint for getting a component from the component manager. eg: $captchaservice.isAnswerCorrect("defaultImageCaptcha", $answer)
Ok, I understand now.
The fact that the last call to the struts based jcaptcha component was from same session means that the answer provided will work.
Perhaps it would be best to offer a way to check the answer with the sessionId either A: $captchaservice.isAnswerCorrect("defaultImageCaptcha", $sessionId, $answer)
or B: #set($captcha = $captchaservice.getCaptcha("defaultImageCaptcha")) $captcha.isAnswerCorrect($sessionId, $answer)
Both sounds good. Although I like the second form.
Also an easy way to get the session id using $request in Velocity? Something like:
A: #set($sessionId = $captchaservice.getSessionId($request))
or B: #set($sessionId = $captcha.getSessionId($request))
I don't know whether binding velocity APIs to HTTPRequest is a good idea, but it will surely make things easy. We could even have something like: #set($captcha = $captchaservice.getCaptcha("defaultImageCaptcha")) $captcha.isAnswerCorrect($request) So we leave all the parameter resolution to the captcha component itself. Thanks. - Asiri