【问题标题】:Use Devise Session to Authenticate Doorkeeper API for Rails/Ember app使用 Devise Session 为 Rails/Ember 应用程序验证 Doorkeeper API
【发布时间】:2017-02-07 00:03:10
【问题描述】:

我正在开发一个带有相应 API 的 Rails 应用程序,并考虑为一些特别动态的前端组件引入 Ember。我正在使用 Devise 进行身份验证,并使用 Doorkeeper 来保护 API 端点和管理 OAuth 令牌。

我不想用 Ember 替换登录部分,因此一旦用户在主“登录索引”页面上登录,Ember 应用程序可能会被初始化。我希望 Ember 应用程序使用公共 API,而不是从我以 Rails 为中心的控制器呈现 JSON,部分是为了简单,部分是为了迫使我保持​​ API 最新。

由于用户已经登录,我认为进行 OAuth 舞蹈并获得令牌是没有意义的。相反,我希望 API 允许来自已由 Devise 登录的客户端的请求(存在会话/cookie)。实际上,一旦登录到应用程序,您应该能够在浏览器中访问 /api/v1/resources.json 并接收 JSON 响应。目前它是 401 Unauthorized。

这看起来是一种合理的方法吗?如果是这样,有没有人有这样做的经验?

【问题讨论】:

    标签: ruby-on-rails api ember.js devise doorkeeper


    【解决方案1】:

    对于将来对此感兴趣的任何人,答案都非常简单:

    module Api
      module V0
        class ApiController < ActionController::Base
          before_action :doorkeeper_authorize!, unless: :user_signed_in?
    
        end
      end
    end
    

    关键部分是unless: :user_signed_in?,由Devise提供

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2017-01-16
      • 2012-02-08
      • 1970-01-01
      • 2016-06-18
      • 2014-01-04
      相关资源
      最近更新 更多