【问题标题】:Designing Rails Authentication API设计 Rails 身份验证 API
【发布时间】:2026-02-21 05:35:01
【问题描述】:

我需要用户通过表单进行身份验证,但我还需要将此身份验证公开为 API 以供其他应用程序/设备使用。

显然我想保持简单并避免重复,那么我应该如何处理呢?我应该对用户登录和 api 登录都使用一个 URI 吗?如果是这样,我应该如何处理不同的要求 - 通过 flash/redirect 通知用户成功或失败并将 JSON 对象返回给 API 客户端?

【问题讨论】:

    标签: ruby-on-rails json api authentication rest


    【解决方案1】:

    为您的用户使用基于表单的登录(例如Devise

    以及基于 OAuth 的 API 登录(对于 rails oauth2_provider

    如果你想正确地做事,你不能避免重复。主要是因为您的 API 是无状态的,而您的用户是有状态的(cookie!)。

    【讨论】:

    • 但是如果我使用基于令牌的身份验证呢?这是否意味着有一种方法可以统一用户登录和 API 身份验证?
    • oAuth 不仅仅是一个 access_token,您必须签署每个请求。规范说您可以获取发送密码的 access_token,但不建议这样做。 tools.ietf.org/html/draft-ietf-oauth-v2-22#page-14 Rails 已经在做所有这些事情了,你不会有太多事情要做,关于重复。