如何在 Doorkeeper::TokenController 上使用 before_action

2023-12-30

我在使用 Doorkeeper::TokensController 时遇到问题。
我想在请求访问令牌之前执行一些代码(无论是否创建,我都想记录它)使用before_action(默认路由是POST /oauth/token / Doorkeeper::TokensController#create.

我跟着医生here https://github.com/doorkeeper-gem/doorkeeper/wiki/Customizing-routes#changing-controllers通过执行以下操作:

配置/routes.rb

  use_doorkeeper do
    controllers tokens: 'oauth/access_tokens'
  end

应用程序/控制器/access_tokens_controller.rb

class Oauth::AccessTokensController < Doorkeeper::TokensController
  before_action :log_auth, only: [:create]

  def log_auth
    puts "I want to log here"
  end
end

但当我这样做时POST /oauth/token,我有以下错误消息:

ActionController::RoutingError(Oauth::AccessTokensController:Class 的未定义方法“before_action”):
应用程序/控制器/oauth/access_tokens_controller.rb:2:在“类:AccessTokensController”中
app/controllers/oauth/access_tokens_controller.rb:1:in '顶部(必需)'

我究竟做错了什么?有没有办法触发before_action或同等水平Doorkeeper::TokensController?


我找到了答案,将其发布在这里以防万一有人需要它:

1 - 门卫
首先,Doorkeeper 构建于ActionController::Metal (see here https://github.com/doorkeeper-gem/doorkeeper/blob/master/app/controllers/doorkeeper/application_metal_controller.rb)。这意味着它不具备您可以在继承自的“经典”控制器中使用的所有功能ActionController::Base

2 - 添加功能
为了添加一些功能到我的AccessTokensController我必须包括AbstractController::Callbacks像这样:

class Oauth::AccessTokensController < Doorkeeper::TokensController
  include AbstractController::Callbacks
  before_action :log_auth, only: [:create]

  def log_auth
    puts "I want to log here"
  end
end

(谢谢this https://stackoverflow.com/a/18189580/5353193回答)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Doorkeeper::TokenController 上使用 before_action 的相关文章

  • Rails 忽略渲染和redirect_to

    我在这里有一个非常简单的 Rails 问题 但我似乎无法在任何地方找到答案 我想有些问题源于我遵循 Rails 1 2 和 Rails 2 1 的教程 反正 我正在编写一个博客系统 并且正在实现评论位 使用脚本 控制台创建评论后 我的评论显
  • Ruby 中对象属性的 Uniq

    在数组中选择一个或多个属性唯一的对象的最优雅的方法是什么 这些对象存储在 ActiveRecord 中 因此使用 AR 的方法也可以 Use Array uniq http ruby doc org core 1 9 2 Array htm
  • sunspot_rails gem - “ Errno:: ECONNREFUSED (连接被拒绝 - 连接 (2)) ”

    我使用宝石 sunspot railshttps github com outoftime sunspot https github com outoftime sunspot我按照上面的说明做了一切http railscasts com
  • 更新 Rails 应用程序的服务器端进度

    我想在 Ruby on Rails 应用程序中上传并处理文件 文件上传通常很短 但服务器端处理可能需要一些时间 超过 20 秒 所以我想给用户一些指示 比无意义的 正在处理 屏幕更好的东西 我正在尝试在视图中使用以下代码 update参数的
  • 如何访问 NFL 的 API?

    我一直在尝试访问或设法访问 NFL com 的数据 但尚未找到 这些网站上有公开文档 https api nfl com docs identity oauth2 index html 但这些文档不会告诉您如何获取客户端 ID 或客户端密钥
  • 限制 Rails 应用程序生成的出站 API 调用

    我不是专业的网络开发人员 但我喜欢把浏览网站作为一种爱好 最近 我一直在开发一个 Rails 应用程序作为一个项目来帮助我学习框架 我的玩具应用程序的目标是通过其他服务的 API 获取数据 并让我可以使用搜索功能进行查询 但是 我想要从中提
  • Watir 中的鼠标移动/鼠标悬停和 JavaScript 评估

    我有一个 JavaScript 重的 Rails 应用程序 正在 watir 中进行测试 我有两个具体的测试要求 我需要能够模拟将鼠标移动到屏幕的特定区域 或者至少触发 div 的 onmouseover 事件 发生上述情况后评估 Java
  • 使用 RSpec 测试 rake 任务后清除数据库

    我正在尝试使用 rspec 测试我的 rake 任务 它运行良好 但问题是记录随后不会被删除 我已经把config use transactional fixtures true在配置文件中没有影响 在其他测试中它运行良好 这是我的代码 r
  • Rails 3 在迁移问题中添加外键

    有谁知道使用迁移在 Rails 3 中创建外键的方法吗 the 外国人宝石 https github com matthuhiggins foreigner对我来说效果很好 它向 Rails 迁移添加了一些方法 可以轻松创建和删除外键 ex
  • Rails sunspot-solr - 带连字符的单词

    我正在使用 sunspot rails gem 到目前为止一切都很完美 但是 我没有得到带有连字符的单词的任何搜索结果 例子 字符串 tron 返回很多结果 所有文章中提到的词都是e tron 字符串 e tron 返回 0 个结果 即使这
  • 在 Rails 3 项目中加载种子数据

    到目前为止 我一直在使用 Fixtures 以及 rake 任务来为我的数据库创建一些种子数据 这工作得很好 但我突然遇到了奇怪的问题 比如在模型中获取 autogen id 1 2 3 然后在连接模型中获取错误的 id 使得关联根本不起作
  • PG::UniqueViolation:错误:重复的键值违反了唯一约束

    我在 Rails 4 2 6 中使用 devise 4 2 0 在我的应用程序中 我在用户和配置文件表中使用嵌套属性 仅当我创建新记录时才需要验证密码 当我更新创建的记录时 密码字段不会验证 My user rb文件是 class User
  • 如何检查一个数字是否包含在一个范围内(在一个语句中)?

    我正在使用 Ruby on Rails 3 0 9 我想检查某个数字是否包含在某个范围内 也就是说 如果我有一个变量number 5我想检查一下1 lt number lt 10并检索一个布尔值 如果number值包含在该范围内 我可以这样
  • Rails 中的时间字段返回空白

    我有一个在 Sqlite3 上运行的简单 Rails 3 b1 Ruby 1 9 1 应用程序 我有这张表 create table time tests do t t time time end 我看到这种行为 irb main 001
  • 在 Xcode 3.2 中使用第三方框架时出现问题

    我正在尝试使用第三方库 MPOAuthConnection 设置自己的项目来连接到 oauth REST API 到目前为止我已经完成的步骤 下载 MPOAuthConnection 的源代码 构建源代码并在 产品 选项卡中生成 MPOAu
  • 使用活动存储时堆栈级别太深 has_one_attached :picture

    我正在尝试为 Ruby on Rails API 项目实现 Active Storage 我根据文档放置了 has one attached picture 并成功将图片上传到AWS S3服务上 现在 当我尝试访问志愿者数据时 它说 Act
  • 从 Rails 4 启用 Amazon RDS 中的 hstore 扩展

    我有一个 Rails 4 应用程序 它使用 ActiveRecord 与 PostgreSQL 9 3 数据库交互 该应用程序利用hstorePostgreSQL 中的扩展 用于在单个数据库字段中存储键值对 因此 Rails 会自动检测我对
  • Rails 3:如何获取特定时区今天的日期?

    为了获得今天的日期 我这样做 Date today gt Fri 20 May 2011 我想获取特定时区的今天日期 例如 Melbourne 我的设置中有以下设置application rb config time zone Melbou
  • Rails 3.1 资产 - 开发中的奇怪服务

    我遇到了 Rails 3 1 资产管道的问题 资产在开发过程中包含两次
  • 如何运行使用 Rails 模型的 Ruby 任务?

    我有一个带有一些基本模型的 Rails 应用程序 该网站显示从其他来源检索到的数据 因此 我需要编写一个 Ruby 脚本来在数据库中创建新实例 我知道我可以使用测试挂钩来做到这一点 但我不确定这在这里是否有意义 我不确定这个任务应该是什么样

随机推荐