【发布时间】:2014-03-02 13:33:11
【问题描述】:
我知道有很多关于这个主题的信息,但我找不到任何最新的。
我看到像this one relating to rails and android authentication 这样的主题,但我看到TokenAuthenticatable is now removed from devise。
我的问题很简单:有没有一种使用 Rails 4 对来自原生 Android 和 iPhone 应用程序的用户进行身份验证的好方法?有谁知道提供解决方案的好教程或文章?
Adam Waite 添加赏金:
我刚刚在这个问题上打开了 500 赏金,因为我找不到在任何地方将用户从 iOS 应用程序验证到 Rails API 的正确做法。这是我正在考虑做的,但不知道它是否安全?!:
假设我们有一个User 记录。用户注册了一个帐户,该帐户在数据库中创建了一条 User 记录,其中包含 email 列和 password_digest 列。
当用户登录时,我希望该用户在移动应用上保持身份验证,直到明确退出。
我想我们将需要基于令牌的身份验证。我可能会在创建 User 时创建一个 ApiKey 记录,并将其保存为 User 记录上的关联。
当用户登录/注册时,响应将包含一个 API 令牌(类似于SecureRandom.hex),该令牌将保存在 iOS 钥匙串中,并与所有后续请求一起使用,通过在标头中传递它来验证用户和使用类似的东西来验证它:
before_filter :restrict_access
private
def restrict_access
authenticate_or_request_with_http_token do |token, options|
ApiKey.exists?(access_token: token)
end
这安全吗?我是否应该在每个请求中刷新令牌并将其包含在响应中?
我还有什么其他选择? Facebook、Twitter 和 Pinterest 之类的网站是做什么的?
我知道 OAuth2.0,但这不是为了授予外部应用程序吗?
是否有一个 gem 可以管理这些?
抱歉,这里完全不确定。
500 到最佳答案。
【问题讨论】:
-
我的任务终于成功了,我现在有一个 Rails 后端,Android 应用可以注册、登录和注销,无需每次都重新验证。我很快就会做例子。它工作得很好,但我不知道它是否安全,我不擅长那个......所以我等待回复。
-
我可以在 iOS 上做同样的事情,但和你一样,不知道它是否容易被破解!
-
也许my answer to this other question 会有所帮助。
-
我正在做的是用提到的 apiauth gem Troy 修改这个github.com/danahartweg/authenticatable_rest_api 应用程序中的令牌生成。该应用程序具有 Ashitaka 提到的所有步骤。
-
@agonist_ 你能解释一下你的制作方法吗?
标签: android ios ruby-on-rails devise oauth-2.0