【问题标题】:Mobile API Authentication with Rails使用 Rails 进行移动 API 身份验证
【发布时间】:2014-09-26 00:40:13
【问题描述】:

我正在为一个 APP 构建一个移动 API 服务器。 我的服务器需要支持用户和身份验证。在过去的 2 天里,我一直在寻找一个好的 gem/ 执行此类任务的最佳实践,但我没有找到。

我已经看到围绕身份验证令牌的设计或自我实现进行了调整,但尚未发现针对此类琐碎任务的完整解决方案。

http://lucatironi.github.io/tutorial/2012/10/15/ruby_rails_android_app_authentication_devise_tutorial_part_one/

https://github.com/plataformatec/devise/issues/2739

【问题讨论】:

标签: ruby-on-rails ruby api mobile


【解决方案1】:

查看 Arcadex gem https://github.com/cleor41/ArcadeX

这是一个创建令牌模型的 Rails 引擎。你把宝石的功能 在您的应用程序控制器内部,它从请求标头或参数中获取令牌并返回与令牌关联的用户 或无。 Nil 表示找不到用户/令牌不存在。唯一的设置是 在创建用户时创建令牌并且您希望在注册后返回此令牌 或在退出后注册并销毁它。可以在该 github 上找到一个示例用例。您需要的所有功能都已完成。 github 会告诉你放置它们的位置。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    据我所知,对于给定的问题,没有开箱即用的解决方案。在我从事的一些项目中,我们总是使用自己的身份验证实现。通常它是一种“2 层令牌身份验证”。

    这个想法是有 1 个令牌来授权应用程序,使用该令牌应用程序获得某些特权,并允许它选择公共调用。如果用户决定通过应用程序登录,应用程序会与 API 交换用户凭据,结果 API 会向应用程序返回第二个令牌。第二个令牌是用户特定令牌并分配给特定角色,因此 API 知道具有该令牌的用户允许执行哪些类型的操作,以及该特定令牌可以对哪些用户或用户组进行更改。

    【讨论】:

      【解决方案3】:

      你考虑过Grape吗?它是一个 API 微框架,可以在基于 Rack 的环境中很好地与您的 rails 应用程序并排放置,或者可以托管在 rails 应用程序本身内。它开箱即用地支持HTTP Basic and Digest Authentication

      如果您对 API 的开发不太了解,可能值得研究一下。

      作为免责声明,我没有亲自使用过 Grape,但我现在自己维护了一个 API,我希望我有(我在开发相关 API 的过程中发现了它)。

      【讨论】:

        【解决方案4】:

        对于 API,您可以使用可以生成的单个哈希,由您的用户柜表单重新生成。 有了这个存储在用户设备上的哈希,用户应用程序可以被授权抛出每个带有参数的 http get 请求,其中包含对 {api_key: this_hash}

        看看http://guides.spreecommerce.com/api/summary.html - 这对你来说是一个很好的例子。

        【讨论】:

          【解决方案5】:

          我和你一样,环顾四周,没有发现任何令人满意的东西。我在需要 API 身份验证之前使用了设计,但发现它没有摩擦。最后,离开 Devise 是一个非常好的举措,因为我现在可以控制用户和凭据策略,而且我可以很好地解决 API 身份验证和授权问题。我保留的部分是设计使用的 Warden 机架中间件。

          我在此处提供了有关设置令牌身份验证的全面答案:https://stackoverflow.com/a/21409810/2238268

          请注意,您使用的任何 gem 都将始终面临在模型、控制器和视图层进行集成的问题,并且会强制采用一些通常与您管理用户或凭据所需的方式不相符的范式。

          【讨论】:

            猜你喜欢
            • 2015-10-05
            • 2014-01-04
            • 1970-01-01
            • 2016-08-30
            • 2019-12-14
            • 2015-10-03
            • 1970-01-01
            • 2022-07-31
            • 1970-01-01
            相关资源
            最近更新 更多