【问题标题】:Devise+activeadmin+doorkeeper - Filter chain halted as :require_no_authentication rendered or redirectedDevise+activeadmin+doorkeeper - 过滤器链停止为 :require_no_authentication 呈现或重定向
【发布时间】:2017-01-12 06:42:03
【问题描述】:

我无法为 /oauth/applications 中创建的应用程序生成访问令牌

我在门卫初始化文件中做了以下更改

doorkeeper.rb

resource_owner_authenticator do
    User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url)
  end

当我尝试从 /oauth/applications 授权应用程序时,我收到以下错误

Started GET "/oauth/authorize?client_id=87122ba040e56b44477a69b189ad809bf663c374f8cc513dd55bff81c07f030b&redirect_uri=http%3A%2F%2Flocalhost%3A3001%2Fauth%2Fapi_provider%2Fcallback&response_type=code&scope=" for 127.0.0.1 at 2017-01-12 12:04:52 +0530
Processing by Doorkeeper::AuthorizationsController#new as HTML
  Parameters: {"client_id"=>"87122ba040e56b44477a69b189ad809bf663c374f8cc513dd55bff81c07f030b", "redirect_uri"=>"http://localhost:3001/auth/api_provider/callback", "response_type"=>"code", "scope"=>""}
  User Load (0.3ms)  SELECT  "users".* FROM "users" WHERE "users"."id" IS NULL LIMIT 1
Redirected to http://localhost:3000/users/sign_in
Filter chain halted as :authenticate_resource_owner! rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.3ms)


Started GET "/users/sign_in" for 127.0.0.1 at 2017-01-12 12:04:52 +0530
Processing by Devise::SessionsController#new as HTML
  User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ?  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.1ms)


Started GET "/" for 127.0.0.1 at 2017-01-12 12:04:52 +0530
Processing by PagesController#index as HTML
  Rendered pages/index.html.erb within layouts/application (0.0ms)
  User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ?  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
  Rendered layouts/_navbar.html.erb (1.2ms)
Completed 200 OK in 136ms (Views: 135.0ms | ActiveRecord: 0.1ms)

我想生成身份验证令牌以授权应用程序为我的应用程序使用 api 调用

试图在Doorkeeper 上关注railscast 剧集

这是我的application

【问题讨论】:

    标签: ruby-on-rails-4 devise oauth-2.0 doorkeeper


    【解决方案1】:

    resource_owner_authenticator 应替换为以下块,以便为您的客户端应用程序生成身份验证令牌

    resource_owner_authenticator do |routes|
     current_user || warden.authenticate!(:scope => :user)
    end
    

    【讨论】:

    • 这行得通,你能写一两行关于这里发生的事情吗?我知道 devise 的 current_user 方法是如何替换 User.find_by_id session[:user_id] 的。
    猜你喜欢
    • 2016-02-25
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 2017-02-11
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多