gpt4 book ai didi

ruby-on-rails - 暂存环境 : Password protect everything except for webhook

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:16 24 4
gpt4 key购买 nike

为了暂存,我想用密码保护所有内容,所以我在下面添加了代码。但是,我该如何编辑它以使其跳过 webhook Controller ,这样我仍然可以在暂存时测试入站电子邮件?

  config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p|
[u, p] == [ENV["STAGING_USERNAME"], ENV["STAGING_PASSWORD"]]
end

最佳答案

我不认为你可以用 `Rack::Auth::Basic' 做到这一点。然而,看着 source ,看来您可以创建自己的简单例份验证机制,该机制需要一个额外的选项。

它与 Rack::Auth::Basic 相同,除了 call 方法。使用以下内容在 app/middleware 中创建一个名为 authenticate_excluding.rb 的文件:

class AuthenticateExcluding < ::Rack::Auth::Basic

def initialize(app, options={}, &authenticator)
@excluded_paths = options[:exclude]
super(app, options[:realm], &authenticator)
end

def call(env)
if @excluded_paths && @excluded_paths.include?(env['PATH_INFO'])
return @app.call(env)
end
super
end
end

您现在可以将它用于:

config.middleware.insert_after(::Rack::Lock, "AuthenticateExcluding", excluding: ["/webhooks/service", "/other_hook"]) do |u, p|
[u, p] == [ENV["STAGING_USERNAME"], ENV["STAGING_PASSWORD"]]
end

那应该行得通。如果您还想启用领域(之前的“Staging”参数),您还可以将 realm: "Staging" 添加到选项散列中。

关于ruby-on-rails - 暂存环境 : Password protect everything except for webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22336048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com