有没有人在Rails应用程序中使用Google新的reptcha的工作示例?我试图遵循的每一个指南要么不清楚要么不完整,似乎使用了不同的方法。
手写编码会更好。
正在进行的工作:
config/environments/production.rb:
#...
recaptcha_public_key= "[PUBLIC KEY]"
recaptcha_private_key= "[PRIVATE KEY]"
end
config/environments/development.rb:
#...
recaptcha_public_key= "[PUBLIC KEY]"
recaptcha_private_key= "[PRIVATE KEY]"
end
config/initializers/recaptcha.rb
Recaptcha.configure do |config|
config.public_key = Rails.application.secrets.recaptcha_public_key
config.private_key = Rails.application.secrets.recaptcha_secret_key
config.api_version = 'v2'
end
4条答案
按热度按时间vbopmzt11#
使用recaptcha gem创建了一个使用复选框方法的示例。
代码可在这里:https://github.com/sunnyrjuneja/recaptcha_example
提交应该很容易遵循。如果你还有问题就告诉我。
此处的应用示例:https://recaptcha-checkbox.herokuapp.com/
更新:
这里有一个方法来做到这一点没有secrets.yml。
将初始化器更改为如下所示:
在开发或生产环境中,将其添加到.bashrc或. zshrc中。
如果你使用Heroku来部署,在你的命令行上执行以下操作:
更新2:
recaptcha gem现在使用不同的方法名来设置键。
Recaptcha.configure do |config| config.site_key = 'YOUR_SITE_KEY_HERE' config.secret_key = 'YOUR_SECRET_KEY_HERE' # Uncomment the following line if you are using a proxy server: # config.proxy = 'http://myproxy.com.au:8080' end
wn9m85ua2#
请遵循以下步骤:
步骤1.创建一个Ruby on Rails应用程序:
a)打开终端,导航到您有权创建应用程序的目录并键入:铁路新回顾
B)创建应用程序后,切换到其文件夹:
$cd recap
c)键入并运行bundle install:
$bundle install
a)请登录Google Recaptcha网站注册您的域名以获得访问权限。(https://www.google.com/recaptcha/intro/index.html)
B)请登录并注册您的网站,详细信息c)注册后,谷歌提供
脚本标记将此代码段放在HTML模板的结束标记之前。div将此代码段放在您希望reCAPTCHA小部件出现的位置的末尾。
d)完成上述步骤后,我们可以在网站中看到recaptcha。
f)对于服务器端验证,我们可以使用密钥和响应,它们将作为参数发送到控制器中的表单提交操作。
g)要检查Google是否已验证该用户,请发送包含以下参数的GET请求:URL:https://www.google.com/recaptcha/api/siteverify
步骤4.服务器端验证的应用程序代码更改。
请参阅以下链接了解更多详情,
1)recaptcha-in-rails
2)google-recaptcha-in-rails
在布局中:
我的视图app/views/users/_form.html.erb:
<div class="g-recaptcha" data-sitekey="6LdgWwETAAAAAPwAddRqDtNbt9sdfsfsfsdJhggghhKKYTdadsHt54"></div>
在初始化器中:
在用户控制器中:
错误:
在成功
因为你可以把
status["error-codes"][0]
表示为_form.html.erb
查看我在heroku中的应用程序
pn9klfpd3#
您应该从RailsCarma's Blog尝试此示例。
请按照以下步骤操作:1)获取凭据2)添加recaptcha标记3)要处理验证,请创建一个recaptcha类4)在注册控制器中添加verify_recaptcha方法
设置步骤1:-
将以下内容添加到gem文件中:
第二步:-
登录developers.google.com,登录你的gmail账户,然后搜索“recaptcha”。点击“注册API密钥”链接。检查密钥和站点密钥。顾名思义,秘密密钥应该保存在更安全的位置,而站点密钥是用于向Google进行身份验证的公钥。注册您的网站名称与您的谷歌帐户检索公共和私人的关键,将用于以后的应用程序。
注册完成后,您将获得公钥和私钥。从客户端侧,公钥被发送到recaptcha服务以请求新的验证码。在服务器端应用私钥以验证是否输入了正确的值。
然后注册一个reCAPTCHA API密钥,并将其添加到您的环境配置文件中:
第三步:-
第四步:-查看
验证码宝石有助于呈现实际的验证码框。这很简单,只需在视图中您希望显示验证码的位置添加以下内容:
第五步:-控制器
Captcha Gem提供了另一个辅助方法,该方法发布到reCaptcha API服务器以验证提交是否正确。如果是,则该方法返回true,如果不是,它将向模型示例添加一个自定义错误消息,指出recaptcha是错误的。下面是控制器的创建操作中的基本代码:
在devise controllers,app/controllers/registrations_controller.rb中,插入以下代码:
会话[:sign_up]被持久化,因为如果验证失败,可以预先填写注册表单。
cxfofazt4#
这里的其他答案不再起作用了,因为recaptcha gem已经更新了,你可以检查here。这就是我在Rails6应用程序中使用recaptcha的步骤。
宝石'rectcha'
如果您使用gems figaro(就像我的例子)或dotenv来存储Env变量,您需要将rectcha gem放置在这两个gem中任何一个的声明下面。
转到属于Google的reCAPTCHA admin console页面,获取一个reCAPTCHA API密钥用于生产,另一个用于开发(稍后您将看到原因)。暂时把所有信息复制到安全的地方。为了在这个问题上有一些顺序,因为将来可能需要几个其他的reptcha键,您应该遵循某种独特的符号来标记这些reptcha键。例如,在我的例子中,它是为我的个人网站,所以我称它们为 * reiniergarcia_production * 和 * reiniergarcia_development *。
您需要在那里选择要使用的特定类型的recaptcha。一种类型的recaptcha的API密钥不适用于另一种类型的recaptcha。在我的例子中,我使用了v2复选框类型(即:“我不是机器人”)。
在我的例子中,我使用Figaro将环境变量存储在Rails上,所以这是我在config/application. yml输入的内容:
我添加了文件 * config/initializers/recaptcha. rb *,并在其中放置:
这是新的配置。请注意,现在它是site_key & secret_key(不再是public_key或private_key)。Figaro将根据环境动态加载正确的密钥。在我的情况下,我部署到Heroku,但不要担心,因为我很快就会到达那里。
这就是我在我的案例中所做的:
您可能需要在前端设置recaptcha标记的位置和/或大小(为recaptcha_tags助手生成)。这就是我在我的案例中所做的:
我添加了文件app/assets/stylesheets/recaptcha_tags. scss,并使用:
它允许首先减小recaptcha标签的大小(非常有用,因为recaptcha标签通常太大)。在您的情况下,如果您需要添加进一步的样式,您应该将其放置在那里,而不是与css代码的其余部分混合使用。导入这个样式文件的方法是在 * app/assets/stylesheets/application. scss * 添加以下内容:
SideNote:* 如果你打算使用几个布局,你应该每个布局都有一个主. scss文件,在每个布局上你只导入那些特定布局所必需的内容(只导入那些额外的. scss绝对必要)。
步骤7:添加verify_reaptcha逻辑:
您需要在相应控制器的正确操作中添加verify_rectcha逻辑。在我的例子中,我只想在用户“不是机器人”的情况下持久化一个Contact对象,所以我在app/controllers/contacts_controller. rb中这样做:
如果用户没有点击“我不是机器人”,它会在我的页面上显示一个flash错误。
就像我之前说的,我使用Heroku。所以我只是在Heroku中进入我的 Jmeter 板,然后我点击我的项目,稍后在设置选项卡,然后在一个按钮上说:“显示配置变量”。然后我将在最后添加以下对(仅限键和值):
正如您所看到的,我只添加了生产recaptcha APY键。
您也可以在终端上通过执行以下操作:
就是这样如果您遵循这些步骤,您应该有您的reptcha完美运行在您的生产网站。希望对你有用。