[英]Extending Doorkeeper TokenResponse class
我需要擴展Doorkeeper::OAuth::TokenResponse
類,因為我想在返回的數據中添加一些內容。 默認情況下,該類創建一個返回主體,如下所示:
{
"access_token": "...",
"token_type": "bearer",
"expires_in": 7200,
"refresh_token": "...",
"scope": "some_scope"
}
我想保留該內容並添加一個新字段:
{
"access_token": "...",
"token_type": "bearer",
"expires_in": 7200,
"refresh_token": "...",
"scope": "some_scope",
"my_custom_field": 47
}
我可以不用猴子修補TokenResponse
類來做到這TokenResponse
嗎? 如果沒有,我可以做些什么來改善當前的實現(以更好地與新版本的Doorkeeper等兼容)? 這是我當前的實現:
module Doorkeeper
module OAuth
class TokenResponse
old_body = instance_method(:body)
define_method(:body) do
body = old_body.bind(self).()
if self.token.scopes.include? 'some_scope'
body[:my_custom_field] = 47
end
body
end
end
end
end
我確實對該功能進行了測試,所以我會知道升級Doorkeeper gem是否會破壞它。
是的,您不需要猴子補丁。 您可以嘗試一些方法。
分叉寶石並在叉子中進行更改,同時確保在有更改時更新叉子。
如果您在Ruby項目中使用Gemfile,請確保指向您的gem分支,例如
gem 'doorkeeper', github: 'USERNAME/doorkeeper'
如果您使用自定義字段在派生中所做的更改足夠通用,請執行拉取請求,但由於哈希值是針對OAuth令牌響應的,因此這可能不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.