门卫与Rails 4应用程序集成

时间:2015-09-19 19:08:21

标签: ruby-on-rails doorkeeper

按照门卫github自述文件中的说明(我想),我得到了before_action

class ReadingsController < ApplicationController
  before_action :doorkeeper_authorize! # Require access token for all actions
...
end

RubyMine抱怨:doorkeeper_authorize!未在范围内定义。 如果我无论如何运行它,我得到:

Processing by ReadingsController#index as HTML
Filter chain halted as :doorkeeper_authorize! rendered or redirected
Completed 401 Unauthorized in 48ms (ActiveRecord: 0.0ms)
控制台上的

,一个完全空白的结果。当我查看视图源时,它看起来像常规结果页面。

嗯,这是失败,还是这实际上告诉我我未经授权?如果是的话,我为什么要连接重定向以允许某人实际进行身份验证呢?

1 个答案:

答案 0 :(得分:1)

关注a working example I've built a while before,您的代码在一个完全出乎意料的地方失败:在像这样的块中的Doorkeeper初始化程序中:

items

我不知道在该块中有什么作用,但一般来说它应该返回一个应该被视为资源所有者的对象。门卫失败了,因为那个街区未能这样做。要在我的示例中实现此块,我使用Devise的resource_owner_authenticator do current_user || begin session[:guest_return_url] = request.fullpath redirect_to(user_omniauth_authorize_path(:facebook)) end end 帮助程序和后备current_user来确定用户未经过身份验证(这是在{{1}中执行的毕竟)。

所以对于门卫来说,让你进入&#34;你需要告诉它&#34;如何识别所有者&#34;。这是门卫无法处理的身份验证