0

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

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

  2. 使用 Facebook 帐户登录

  3. 使用 Twitter 帐户登录

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

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

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

4

1 回答 1

1

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

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

设计

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

更多信息在这里

OAuth2

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

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

Devise 可以处理 OAuth2 客户端。

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

结论

设计非常适合身份验证。在您的情况下,使用他们的令牌模块与 OAuth2 集成可以解决问题。

是来自 Devise 的 OmniAuth wiki 页面

是来自 Devise 的 Simple Token Authentication wiki 页面

于 2013-08-09T07:43:30.117 回答