电子邮件令牌(设计、巫术)
您可以向新用户发送电子邮件吗?
许多网站使用的一个简单解决方案是向用户发送带有安全令牌的电子邮件。一个很好的 Rails gem 是 Devise,另一个是 Sorcery,它可以让您轻松构建自己的自定义身份验证。
第三方登录(OmniAuth、OpenId、Facebook Connect、Twitter 等)
您可以使用第三方服务对用户进行身份验证吗?
OmniAuth gem 可以连接到许多第三方服务,并允许用户使用 Google、Yahoo、Facebook、Twitter、LinkedIn 上的现有帐户以及包括 LDAP 和 Shibboleth 在内的开放服务进行身份验证。
OpenId gem 与 Google、Yahoo 和许多其他大型提供商配合得很好;您还可以在 OmniAuth 中使用 OpenId。
在所有这些情况下,您都会跟踪发送情况,这样用户就不会使用相同的电话号码、邮政地址、信用卡等过快地再次申请。
电话消息 (Twilio)
您可以向您的用户发送短信吗?
Twilio gem 可以向电话号码发送短信。这个概念是你的
应用程序向他们发送带有验证码的短信。
蜗牛邮件(邮寄方式)
postalmethods gem 可让您在邮政邮件中发送真实的实物明信片。您可以发送带有验证码的明信片。这可能需要几天时间,因此一些网站将其与新用户的“试用期”结合使用,在这种情况下,他们在某种程度上被沙盒化,不会造成任何麻烦。 (例如,他们可以阅读信息,但不能发布信息)。
信用卡(BrainTree)
相关的想法是让用户向您发送需要信用卡的东西,例如使用 BrainTree 或 ActiveMerchant 等支付网关。
您无需向其收取任何费用即可验证该卡已打开且有效。或者您可以要求最低限度的付款,例如要求用户通过 PayPal、Google Payments、Amazon Dev Pay 等向您发送一美元。
信用卡号码具有内部结构(如校验和),因此您可以验证该号码的格式和校验和是否正确。一个简单的脚本是flame.org
图像验证码(recaptcha)
为了阻止机器人,Ruby recaptcha 等验证码非常有效。
Ruby 有其他验证码解决方案,其中任何一个都可以。
因果报应(hypothes.is)
这不是一个宝石,而是一个概念。授予新用户有限的权限,例如只读访问权限。让用户通过成为会员一段时间、贡献内容或与您网站内的朋友和同行联系等方式获得新的特权。
这就是 StackOverflow 等网站的工作方式,在 http://hypothes.is 上有很多关于这些方法的好信息
组合
最强大的方法是这些技术的组合。
也许给一个新用户一些基本的能力,比如阅读信息,然后让他通过上面的一个或多个身份验证来获得新的能力。这就是 Google 和 Facebook 添加一些功能的方式:您可以轻松注册,然后验证其他电子邮件,然后验证您的电话号码,然后验证您的邮政地址。