1
我在Rails API應用程序中有兩個warden策略,用於基本身份驗證和令牌身份驗證。守望者跳過策略
初始化/ 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
而且這兩種策略實現#valid?
class BasicAuthStrategy < ::Warden::Strategies::Base
def valid?
auth.provided? && auth.basic?
end
...
end
和
class AuthTokenStrategy < ::Warden::Strategies::Base
def valid?
auth.provided? && !auth.basic? && headers['HTTP_AUTHORIZATION'].start_with?('Bearear')
end
...
end
我想使與令牌的請求,區長試圖BasicAuthStrategy然後它試圖AuthTokenStrategy馬斯它在第一後結束。它忽略了一種策略。爲什麼? PS:我不使用設計。我不使用設計。我不使用設計。我不使用設計。