0

トークンを使用してリクエストを認証するために、doorkeeper gem を使用しています。

以下に定義されているように doorkeeper_for を構成すると、トークンが必要になります。

doorkeeper_for :all

doorkeeper_for の条件を実際に必要な条件に設定すると (トークンなしでローカル展開エンドポイントへのリクエストを許可する)

doorkeeper_for :all, :unless => lambda { request.url =~ /http:\/\/(localhost|127.0.0.1|0.0.0.0):8080/

または、この条件を任意の数のジャンク条件に設定した場合:

doorkeeper_for :all, :if => lambda { true }

doorkeeper_for :all, :unless => lambda { true }

次に、ドアキーパーはすべてのリクエストがトークンなしで通過することを許可しますが、これは悪いことであり、予期されていません

require 'doorkeeper'私にはステートメントがあり、APIコントローラーのさまざまなインクルードステートメントをいじったことに注意してください。include Doorkeeper::Helpers::Filter

これは、Grape を使用する Doorkeeper の問題に関係している可能性がありますが、条件なしで正常に動作するのは奇妙です。なぜこれが起こっているのかについての洞察をいただければ幸いです。

4

1 に答える 1

0

doorkeeper-gem の主な貢献者と話し合った結果、Grape の使用が関係していると判断しました。この機能は、Rails ベースのコントローラーで問題なく動作するはずです: https://github.com/doorkeeper-gem/doorkeeper/issues/426

Grape 自体はよりメタルに近い API フレームワークであると想定されており、必ずしも Rails で使用されるとは想定されていないため、この問題が発生しました。

最後に、Grape と Doorkeeper の gem を統合するための特別な gem があります: https://github.com/fuCtor/grape-doorkeeper

于 2014-07-09T21:11:26.957 に答える