У меня есть webapp, который защищен Apache Shiro и работает нормально. Теперь я хочу добавить reCaptcha Goolge на мою страницу входа и не могу понять, как это сделать.Реализация reCaptcha с Apache Shiro
Качалка добавлена и работает нормально, мне нужна помощь в том, как интегрировать ее с Shiro теперь, чтобы выполнить проверку, прежде чем продолжить аутентификацию пользователя.
Из того, что я собрал из docs, это будет сделано с помощью цепочки фильтров.
Так я это в мой shiro.ini
:
[main]
authc.failureKeyAttribute = shiroLoginFailure
authc.loginUrl = /login.jsp
authc.successUrl = /LogIn
logout.redirectUrl = /login.jsp
captcha = path.to.my.class.VerifyUserFilter
...
[urls]
/login.jsp = captcha,authc
/* = authc
Я знаю, как реализовать логику проверки капчи. То, что я не знаю, это то, что класс VerifyUserFilter должен выглядеть в стороне от фактической логики проверки, чтобы сделать эту работу. По существу, все, что ему нужно сделать, это опубликовать в Google API, получить ответ, проанализировать его и на основе результата передать запрос на следующий фильтр или остановить, если верификация завершилась неудачно.
Прежде чем я разместил это, я решил дать ему последнюю попытку и потратил пару часов на то, чтобы пробовать разные вещи и в конечном итоге заставить его работать! Я все равно решил опубликовать этот вопрос в любом случае вместе с моим собственным ответом ниже, поскольку мне не удалось найти большую помощь при исследовании этого вопроса, а также выяснить, правильно ли я сделал то, что я сделал. Если есть лучший или более правильный способ сделать это, я бы хотел знать.