0

我正在使用葡萄和门卫来进行 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 并注意到,类DoorkeeperForBuildercreate_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

4

1 回答 1

0

我最近从葡萄门卫搬到了wine_bouncer
它在 ruby​​ 2.2.0 和 rails 4.2.0 上运行良好,使用 doorkeeper 2.0.1 和 grape 0.10.1。

于 2015-02-10T14:07:57.857 回答