J'ai deux stratégies de garde dans une application Rails API, pour l'authentification de base et pour l'authentification par jeton.Warden saute la stratégie
initializers/warden.rb
Warden::Strategies.add(:auth_token, AuthTokenStrategy)
Warden::Strategies.add(:basic_auth, BasicAuthStrategy)
config/application.rb
config.middleware.insert_after ActionDispatch::Callbacks, Warden::Manager do |manager|
manager.default_strategies :auth_token, :basic_auth
manager.failure_app = UnauthorizedController
end
Et les deux stratégies met en œuvre #valid?
class BasicAuthStrategy < ::Warden::Strategies::Base
def valid?
auth.provided? && auth.basic?
end
...
end
et
class AuthTokenStrategy < ::Warden::Strategies::Base
def valid?
auth.provided? && !auth.basic? && headers['HTTP_AUTHORIZATION'].start_with?('Bearear')
end
...
end
J'imagine faire une demande avec jeton, gardien tente BasicAuthStrategy puis il essaie AuthTokenStrategy mas se termine après la première. Il ignore une stratégie. Pourquoi?
PS: Je n'utilise pas concevoir.