我正在开发一个Rails应用程序以及相应的API,并考虑为一些特别动态的前端组件引入Ember。我正在使用Devise进行身份验证,使用Doorkeeper来保护API端点并管理OAuth令牌。
我不想用Ember替换登录件,因此一旦用户登录主要“登录索引”页面,Ember应用程序就可能被初始化。我希望Ember应用程序使用公共API,而不是从我的以rails为中心的控制器渲染JSON,部分原因是为了简化,部分是为了让我保持API最新。
由于用户已经登录,因此我认为进行OAuth舞蹈并获取令牌是不合理的。相反,我希望API允许来自Devise登录的客户端的请求(会话/ cookie的存在)。实际上,您应该能够在登录到应用程序并访问JSON响应后在浏览器中访问/api/v1/resources.json。目前它是401 Unauthorized。
这看起来像是一种合理的方法吗?如果是这样,有没有人有这方面的经验?
答案 0 :(得分:0)
对于将来对此感兴趣的人,答案非常简单:
module Api
module V0
class ApiController < ActionController::Base
before_action :doorkeeper_authorize!, unless: :user_signed_in?
end
end
end
关键部分是unless: :user_signed_in?
,由Devise提供