Как пропустить перед фильтром в 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