我为 rails 创建了一个自定义中间件,它将拦截所有请求并确保它来自授权 IP,否则它应该提示输入基本的 http auth 用户/名称密码。
这是目前的样子:
require 'net/http'
class AuthorizeEnvironment
def initialize(app)
@app = app
end
def call(env)
if AppConstants.approved_doximity_ips.include?(env["REMOTE_ADDR"])
@app.call(env)
elsif authorized?(env)
@app.call(env)
else
[403, {"Content-Type" => "text/html"}, ["Not Authorized on this environment."]]
end
end
def authorized?(env)
@auth ||= Rack::Auth::Basic::Request.new(env)
@auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == ['username', 'password']
end
end
这段代码的问题是我似乎找不到在浏览器上触发 http auth 窗口的方法。我对此进行了审查,但没有看到任何明显的迹象表明这是如何完成的。
你能指出我正确的方向吗?