Как пропустить перед фильтром в Grape Rails?

Я использую гем Grape_rails для управления API, и на моих конечных точках у меня есть следующее:

..api/v4/конечные точки/base.rb

      class Endpoints::V4::Base < Endpoints::Base
  before { authenticate_with_token! }

  version 'v4', using: :path

  mount Endpoints::V4::Menu
  mount Endpoints::V4::Customer
  mount Endpoints::V4::Orders   
end

Я хотел бы пропустить аутентификацию_с_токеном ! метод Endpoints::V4::Menu в моем файле base.rb, но у меня он не работает.

Я уже пробовал с:

      class Endpoints::V4::Base < Endpoints::Base
  skip_before { authenticate_with_token! only: :customer  } # first test 
  before { authenticate_with_token! except: :customer } # second test

  ...

  def customer
    mount Endpoints::V4::Products
  end
end

Спасибо за ваше время

1 ответ

Вы можете досрочно вернуться к своему методу аутентификации, аутентифицируйтесь только в том случае, если выполняются некоторые условия.

      class Endpoints::V4::Base < Endpoints::Base
  before { authenticate_with_token! } 

  ...

  def authenticate_with_token!
    return if <condition>

    ....
  end
end

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

      class Endpoints::V4::Base < Endpoints::Base
  before { authenticate_with_token! if authentication_required? } 

  ...

  def authenticate_with_token!
    
  end

  def authentication_required?
    <condition>
  end
end
Другие вопросы по тегам