有哪些不同的方法可以用来从作为iOS后端的rails服务器验证用户?

时间:2013-08-09 07:25:16

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我使用rails作为ios应用程序的后端。到目前为止,我一直在使用设计,因为它看起来灵活,舒适,使用较少的努力。我已经阅读了关于omniauth的内容,并且看起来很容易与设计集成。我的问题是,考虑我的ios应用程序需要身份验证,以下是我应该能够允许用户执行的不同方法

  1. 使用电子邮件和密码登录

  2. 使用Facebook帐户登录

  3. 使用Twitter帐户登录

  4. 使用电子邮件登录可以由设计本身处理,但如何使用Facebook和Twitter登录?实际上在我的一个项目中,我提出了以下方法,其中包含所有这三个登录过程。 ios应用程序从设备(不设计)本身验证用户,并发送用户信息,如用户名,电子邮件等任何需要的身份验证类型,所以我保存这个单独的用户与发送的用户名和一个字段作为密码。下次他向我发送这些详细信息时,我允许他登录该应用程序。但现在我意识到这不是最好的方法。我读到了FBgraph,它可以用来验证访问令牌的有效性,所以我应该从用户那里获得令牌,然后验证它并获取配置文件信息并将其保存在用户模型中并给它们令牌。

    另外我有另一个疑问,即使用电子邮件和密码登录我允许用户通过电子邮件和密码登录,然后对于每个请求,用户向我发送用户名和密码。这是否正常,或者我是否必须在登录请求中创建令牌并将令牌作为响应发送,然后用户可以发送令牌以用于他所做的所有其他请求。

    很抱歉,如果它令人困惑,但很快就告诉你我需要知道如果我有这三个登录过程该怎么办。任何帮助是极大的赞赏。谢谢你

1 个答案:

答案 0 :(得分:1)

在处理其他设备上的外部应用程序时,需要考虑几件事情:

  1. 您应该使用API​​与Rails服务器进行通信
  2. 您的服务器应在使用其电子邮件和密码进行首次用户身份验证后发送身份验证令牌。为每个请求发送用户的电子邮件和密码不是一个好主意。
  3. 设计

    Devise非常适合使用token_authenticatable挂钩进行应用内和远程应用的身份验证。这将允许任何注册用户拥有一个唯一的秘密令牌,以便在您的服务器上进行身份验证。

    更多信息here

    的OAuth2

    OAuth2正在成为对远程服务进行身份验证的标准方式,例如,用户可以使用自己的Facebook帐户登录。

    这将是允许您的用户使用他们的Facebook或Twitter帐户进行身份验证的更简单方法(请注意,Twitter不会向您提供用户的电子邮件地址)。

    Devise可以处理OAuth2客户端。

    最后,您还可以创建自己的OAuth使用者,以使用您的服务对用户进行身份验证。 Doorkeeper是保护API端点并允许用户使用OAuth2的绝佳宝石。

    结论

    Devise非常适合身份验证。使用他们的令牌模块和OAuth2集成可以解决您的问题。

    Here是Devise的OmniAuth wiki页面

    Here是Devise的简单令牌验证wiki页面