Условные обозначения Ruby OAuth «привратник»

Я использую гем привратника для использования токенов для аутентификации запросов.

Когда у меня 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, хотя опять же странно, что он прекрасно работает без условного оператора. Любое понимание того, почему это происходит, будет оценено!


person quetzaluz    schedule 09.07.2014    source источник


Ответы (1)


После разговора с основным автором привратника-драгоценного камня мы определили, что это связано с использованием винограда. Эта функция должна прекрасно работать с контроллерами на основе Rails: https://github.com/doorkeeper-gem/doorkeeper/issues/426

Grape сам по себе должен быть фреймворком API, более приближенным к металлу, и его не обязательно использовать с Rails, что способствовало этой проблеме.

И последнее замечание: есть гем специально для интеграции гемов Grape и Doorkeeper: https://github.com/fuCtor/grape-doorkeeper

person quetzaluz    schedule 09.07.2014