Rails - 一种不以电子邮件为中心的身份验证解决方案?(以SMS为中心)

时间:2015-03-01 07:38:08

标签: ruby-on-rails authentication devise

似乎各种流行的身份验证宝石(包括devise)都是围绕电子邮件构建的。然而,在一些发展中国家,许多用户根本不使用电子邮件,而更喜欢通过SMS验证码进行验证。在devise中似乎可以允许用户使用电子邮件地址以外的其他内容登录。但是,用户是否也可以通过手机恢复他/她的密码?(即只需通过短信服务将新密码发送到他/她的手机)。

此外,https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-with-something-other-than-their-email-address我不清楚是否可以完全删除注册表单中的电子邮件字段,或者只是将其设为非必需,但仍然存在?

如果无法实现上述目标,那么有没有其他可用的宝石解决方案?我看到像https://github.com/binarylogic/authlogic这样的宝石似乎与方法无关。但我不确定更好的解决方案是建立我自己的身份验证系统而不是使用任何gem。我在RailsGuide上看到,最好使用gem进行身份验证,但我不确定原因。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您不熟悉使用电子邮件进行身份验证的devise方法,我建议您实施自己的身份验证逻辑。要了解如何进行简单的身份验证,请查看Micheal Hartl撰写的book。通过电子邮件替换确认,并使用短信或类似的东西使用像Twilio这样的API确认。

答案 1 :(得分:1)

如果您确定要使用SMSes进行登录,我建议您放弃设计并推出自己的身份验证方法。

但是有几件事需要考虑:

  1. 短信的可传递性低于电子邮件。有 严格禁止自动短信政策的国家(例如印度)和 短信不工作的国家(例如缅甸)
  2. 为了缓解上述问题,请实施回退语音(拿一个 看看Nexmo的text to speech API)
  3. 请记住country specific restrictions
  4. 如果您发送了大量短信,请将负载分散到多个数字
  5. 用于安全存储密码 使用has_secure_password