Fra*_*ois 3 ruby-on-rails oauth doorkeeper
我在使用 Doorkeeper::TokensController 时遇到了问题。
我想在请求访问令牌之前执行一些代码(如果它已创建与否,无论如何我都想记录它)使用before_action(默认路由是POST /oauth/token/ Doorkeeper::TokensController#create。
我通过执行以下操作来遵循此处的文档:
配置/路由.rb
use_doorkeeper do
controllers tokens: 'oauth/access_tokens'
end
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/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
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时POST /oauth/token,我收到以下错误消息:
ActionController::RoutingError(Oauth::AccessTokensController:Class 的未定义方法“before_action”):
app/controllers/oauth/access_tokens_controller.rb:2:in 'class:AccessTokensController'
app/controllers/oauth/access_tokens_controller.rb:1:in '顶部(必填)'
我究竟做错了什么?有没有办法触发 abefore_action或等效项Doorkeeper::TokensController?
我找到了答案,贴在这里以防万一有人需要它:
1 - Doorkeeper
首先,Doorkeeper 建立在ActionController::Metal(见这里)。这意味着它没有提供您可以在继承自的“经典”控制器中使用的所有功能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
Run Code Online (Sandbox Code Playgroud)
(感谢这个答案)
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |