似乎包括devise
在内的各种流行的身份验证宝石都是围绕电子邮件构建的。然而,在一些发展中国家,许多用户根本不使用电子邮件,而是更喜欢通过短信验证码进行验证。在devise
中,似乎可以允许用户使用电子邮件地址以外的其他内容登录。然而,用户是否也可以通过手机恢复密码?(即,仅通过SMS服务将新密码发送到他/她的手机)。
此外,我还不清楚https://github.com/plataformatec/devise/wiki/How-To:-允许用户使用电子邮件地址以外的其他内容登录,我是否可以完全放弃注册表单中的电子邮件字段,或者只是将其设置为而不是强制性,但仍然存在?
如果无法实现上述目标,那么是否有其他gem解决方案可用?我看到的宝石像https://github.com/binarylogic/authlogic似乎是方法不可知论者。但我不确定更好的解决方案是否是只构建自己的身份验证系统,而不是使用任何gem。我在RailsGuide上看到,最好使用gem进行身份验证,但我不太清楚为什么。
谢谢!
如果您确定要使用SMS登录,我建议您放弃设计并推出自己的身份验证方法。
然而,有一些事情需要考虑:
- 短信的发送能力低于电子邮件。有有严格的无自动短信政策的国家(如印度)和短信根本不起作用的国家(例如缅甸)
- 为了缓解上述问题,实现回退到语音(采取看看Nexmo的文本到语音API)
- 请记住特定国家的限制
- 如果你发送了很多短信,请将负载分散到多个号码上
- 用于安全存储密码使用has_secure_password
如果您对使用电子邮件进行身份验证的devise
方式不满意,我建议您实现自己的身份验证逻辑。要了解如何进行简单的身份验证,请参阅Micheal Hartl的这本书。用短信一次性密码或类似使用Twilio这样的API的方式来代替电子邮件确认。