2009-08-06 64 views
0

我如何使用這樣的子類做同樣驗證的東西,在this page紅寶石的WEBrick HTTP認證

 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 

回答

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 

你遇到了什麼問題?

+0

當我編寫上面的代碼時,它沒有工作出於某種原因:(所以我讀過,你可以把HTTPAuth.basic_auth(....塊在'配置'類'服務'方法,但它的工作原理,但是;對於ruby代碼的生命週期,它只要求每個IP只進行一次認證,我的意思是,當我第一次請求頁面時,它要求認證,但是當我刷新或關閉並重新打開我的瀏覽器它並沒有再次要求認證,看起來像webrick沒有處理它創建的實例(因爲它不會爲同一個IP多次調用init或service方法) – 2009-08-06 21:37:18

+0

我不希望瀏覽器在請求認證之後再次請求認證一個刷新,因爲它會記住領域的憑據,並會自動重新發送。當你關閉並重新打開瀏覽器,你關閉了所有的瀏覽器窗口,以便瀏覽器完全退出? – mikej 2009-08-07 07:39:33

+0

如果您想嘗試一下,我已將完整的測試腳本上傳到http://pastie.org/pastes/575142。 – mikej 2009-08-07 07:41:26