如何在rails应用程序中通过sms/captcha添加OTP进行登录认证…
组织ID,注册邮箱,密码:系统专用键:==>提交按钮。然后显示OTP字段OTP通过短信:,验证码:
添加宝石——RECAPTCHA
gem "recaptcha", :require => "recaptcha/rails"
然后注册一个reCAPTCHA API密钥并将其添加到您的环境配置文件:
1 #put this in development.rb and in production.rb (separate keys in each so you can test!)
2 RECAPTCHA_PUBLIC_KEY= 'your-public-key'
3 RECAPTCHA_PRIVATE_KEY= 'your-private-key'
并添加以下内容到配置文件
#in config/initializers/recaptcha.rb
Recaptcha.configure do |config|
config.public_key = RECAPTCHA_PUBLIC_KEY
config.private_key = RECAPTCHA_PRIVATE_KEY
end
<%= raw recaptcha_tags %>
Captcha Gem提供了另一个帮助器方法,该方法发送到reCaptcha API服务器以检查提交的内容是否正确
##replace model.save with this
if @model.save ....
if verify_recaptcha(:model => @model, :message => "Please enter the correct captcha!") && @model.save
如果你想使用验证码与设计,访问这里
最常见和可访问的一次性密码(OTP)是基于短信或语音的,因为默认情况下,即使是最早一代的移动电话也可以使用短信和语音。如果你正在开发一些针对世界上每个国家各行各业的人的服务,这使得短信/语音OTP成为理想的选择。
要发送短信/语音OTP,您需要向位于互联网和电话基础设施之间的短信/语音网关发送请求。
不幸的是,所有的短信/语音网关都是由付费服务拥有的,因此没有开源这样的东西,我可以推荐。幸运的是,我们找到了RingCaptcha (https://ringcaptcha.com),它有一个"入门计划",每月免费提供500个OTP。这只是他们提供免费增值服务的一个小卖点;它们非常可靠,因为它们与所有主要的全球和区域提供商集成,例如,Twilio, Nexmo, Infobip, MessageBird等,并通过基于国家/电话运营商的最佳提供商/路由发送您的OTP,并且可以自动回退到替代路径。这意味着您只需要与RingCaptcha集成,而无需决定哪个短信/语音OTP提供商具有价格和可靠性的最佳组合,这是一个真正令人头痛的问题,当您在全球范围内发送OTP时。
他们有一个简单的循序渐进的教程,大约需要2-3分钟来实现OTP登录:https://coderwall.com/p/x3zczq/rails-devise-alternative-password-less-database-less-user-sign-in-sign-up-using-2fa-in-2-minutes
它基于一个gem 'user_management_rails'。
我将在这里总结这些步骤:
- 创建Rails应用程序
-
$ rails new YOUR_APP_NAME
- 安装user_management_rails gem
- 添加到'Gemfile':
gem 'user_management_rails'
- 添加到'Gemfile':
- 包安装
- 在此注册RingCaptcha: https://my.ringcaptcha.com/register
- 运行生成器创建注册、登录、注销页面
-
rails generate user_management_rails:install --ringcaptcha-key=YOUR_RINGCAPTCHA_APP_KEY --um-key=YOUR_UM_KEY
启动Rails服务器 -
-
rails server
- 试试!
-
http://localhost:3000/
-
这些链接reCAPTCHA和Rails和reCAPTCHA将帮助您添加验证码到您的应用程序。
你可以使用active_model_otp在你的rails应用程序中实现一次性密码(OTP)功能