如何在rails中实现定制的recaptcha?

 蓝羽月妞妞 发布于 2023-01-31 11:42

虽然使用现有的宝石来为每个单独的表单添加一个recaptcha是一个非常简单的事情,我无法弄清楚如何创建recaptcha,如下图所示.

      |
 user submits question form  <-------
      |                             | 
      V                             |
=============================       |
| Are the attributes valid? | ----> NO 
=============================
      |
     YES  
      |
      V
===============================================================
| Has user submitted more than 4 forms in the last 5 minutes? | --NO---| 
===============================================================        |
     |                                                                 |
    YES                                                                |
     |                                                                 |
  redirect them to recaptcha form                                      |
     |                                                                 |
     V                                                                 V
============================                    ************************************
|  Captcha form incorrect? | -- NO ---------->  *   save the form as a record      *
============================                    *     and redirect user to see it  *
     |              ^                           ************************************
    YES             |
     |              NO
     V              |
==================================================
|  Have they been redirected to the captcha form | 
|    more than 5 times in the last minute?       |
==================================================
     |
    YES
     |
     V
*******************
* TEMPORARY BLOCK *
*******************          

我只是无法弄明白该怎么做.例如,当用户填写验证码表单时,保存的提交数据在哪里?在会议中?在缓存中?在饼干?有关如何实现这一目标的任何指示?

我正在考虑应用程序控制器中的某种功能,由before_action全钩子触发.每次调用此操作时(即,只要用户请求我的应用程序的链接),操作就会在时间戳数组中加上时间戳.当这个数组充满10个时间戳时,我们计算出平均值,并且在x量下我们阻止它们.这将阻止抓取工具和垃圾邮件发送者.

However, I still want to let google, yahoo! and bing in!为什么不上网回机器?我不想妥协我的应用程序.在我跳到此之前,我需要了解很多细微差别.

这是我想要简单实现的行为:

*如果用户在y秒内发送x个请求,请将其重定向到重新填充页面.如果他们通过了recaptcha,让他们继续正常.*

我对视觉和逻辑(基于问题)的回收都持开放态度,只想要一个解决方案而不是为每一个形式添加一个recaptcha ...

另外,我不喜欢使用宝石,因为他们觉得我喜欢黑盒子.我更喜欢自己做.但是,我确实喜欢像州机器和载波一样的多才多艺的宝石,所以如果有一个开放式的recaptcha宝石,我会对此持开放态度.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有