我正在使用葡萄和门卫来进行 OAuth2 身份验证。现在,我想从grape 0.8升级到grape 0.10.1,门卫升级到2.0.1。不幸的是,我遇到了一些问题。之前,我可以使用grape-doorkeeper 轻松地将doorkeeper 集成到grape https://github.com/fuCtor/grape-doorkeeper
但是在升级后,我得到了一些错误uninitialized constant Doorkeeper::DoorkeeperForBuilder (NameError)
,并且doorkeeper_for
助手似乎从门卫中删除并替换为before_action :doorkeeper_authorize!
(参见https://github.com/doorkeeper-gem/doorkeeper/blob/master/CHANGELOG.md#backward-incompatible -更改)。
这里https://github.com/intridea/grape#register-custom-middleware-for-authentication Grape 文档告诉我们,我们可以rack-oauth2
用于 OAuth2 身份验证,但据我所知,这缺乏简单的 rails 集成那个门卫提供的,对吧?
所以现在,我有点困惑,如何将门卫 2.0.1 集成到葡萄 0.10.1 中。我已经阅读了一些教程,但它们针对的是此 gem 的旧版本。所以,任何帮助表示赞赏!
更新
我深入研究了 GrapeDoorkeeper gem,发现了以下几行(https://github.com/fuCtor/grape-doorkeeper/blob/master/lib/grape-doorkeeper/oauth2.rb#L64):
module OAuth2
def doorkeeper_for *args
doorkeeper_for = Doorkeeper::DoorkeeperForBuilder.create_doorkeeper_for(*args)
use GrapeDoorkeeper::Middleware, doorkeeper: doorkeeper_for
end
end
然后我查看了 doorkeeper 2.0.1 并注意到,类DoorkeeperForBuilder
和create_doorkeeper_for
方法都消失了。我也找不到替代品或其他方法来做到这一点。对我来说,它看起来像是Doorkeeper::DoorkeeperForBuilder.create_doorkeeper_for
返回了一个葡萄使用的中间件。那么,新的门卫将如何做到这一点?
另一个问题是,如果这条线仍然适用于门卫 2:https ://github.com/fuCtor/grape-doorkeeper/blob/master/lib/grape-doorkeeper/oauth2.rb#L73
Grape::API.extend GrapeDoorkeeper::OAuth2