按照门卫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)
控制台上的,一个完全空白的结果。当我查看视图源时,它看起来像常规结果页面。
嗯,这是失败,还是这实际上告诉我我未经授权?如果是的话,我为什么要连接重定向以允许某人实际进行身份验证呢?
答案 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;。这是门卫无法处理的身份验证。