【问题标题】:Ruby Webrick HTTP AuthenticationRuby Webrick HTTP 身份验证
【发布时间】:2009-08-06 11:19:13
【问题描述】:

如何在this page 中使用这样的子类进行相同的身份验证:

        class Configuration < HTTPServlet::AbstractServlet
        def do_GET (request, response)
            SOMETHING....
        end
        end

    server = HTTPServer.new(:Port => 666)
    server.mount "/conf", Configuration
    trap "INT" do server.shutdown end
    server.start

【问题讨论】:

    标签: ruby authentication webrick


    【解决方案1】:

    如果您以几乎相同的方式进行操作,我似乎可以正常工作,例如

    class Configuration < HTTPServlet::AbstractServlet
        def do_GET(req, res)
            HTTPAuth.basic_auth(req, res, "My Realm") {|user, pass|
              # block should return true if
              # authentication token is valid
              user == 'user' && pass == 'topsecret'
            }
            res.body = 
              "Authenticated OK\n"
        end
    end
    

    你遇到了什么问题?

    【讨论】:

    • 当我像上面那样编写代码时,由于某种原因它不起作用:(。所以我读到您可以将 HTTPAuth.basic_auth(.... 块放在“配置”类中在“服务”方法中。这样它可以工作但是;对于 ruby​​ 代码的生命周期,它只要求每个 IP 进行一次身份验证。我的意思是,当我第一次请求页面时,它要求身份验证,但是当我刷新时或关闭并重新打开我的浏览器,它不会再次要求身份验证。看起来 webrick 没有处理它创建的实例(因为它不会为同一个 IP 多次调用 init 或 service 方法)
    • 我不希望浏览器在刷新后再次请求身份验证,因为它会记住领域的凭据并自动重新发送它们。当您关闭并重新打开浏览器时,您是否关闭了所有浏览器窗口以便完全退出浏览器?
    • 如果您想尝试一下,我已将完整的测试脚本上传到pastie.org/pastes/575142
    • 是的,我确实关闭了所有浏览器窗口。关于未处理的实例:我观察了我编写的 ruby​​ WEBrick 代码的内存使用情况,并且每个访问该站点的新 IP 都会增加代码的内存使用情况,并且它并没有像我观察到的那样下降。看起来这里缺少一些东西,我认为身份验证也与之相关......(如果它确实处​​理了实例并在每次浏览器刷新时重新创建一个实例,那么它会再次要求身份验证,这解决了我的问题......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多