2013-08-07 145 views
0

是否有節點原生的方式來解析基本認證?NodeJS原生基本認證

步驟將是:

  • 查找認證頭
  • 解析編碼值
  • 記號化在結腸和返回用戶名/密碼
  • 也許友好的錯誤處理/消息上失敗

不尋找Connect/Express框架解決方案。

我意識到這是非常微不足道的手工,但它有一個標準的方式來實現這一點,而不需要重新發明輪子是很好的。

+0

好吧,我在回答後完全改變了這個問題。 :-)但是,如果你排除npm模塊apriori,你的問題基本上是在這個目錄下的grep:https://github.com/joyent/node/tree/master/lib。我認爲答案是「不完全,但你可以很容易地建立你所需要的東西」,但只需克隆回購和搜索。 –

回答

0

所以HTTP認證有一個令人困惑的事情。當你有這樣的https://user:[email protected]', that will parse just fine with url.parse`憑據網址:

url.parse('https://user:[email protected]') 
{ protocol: 'https:', 
    slashes: true, 
    auth: 'user:password', 
    host: 'example.com', 
    port: null, 
    hostname: 'example.com', 
    hash: null, 
    search: null, 
    query: null, 
    pathname: '/', 
    path: '/', 
    href: 'https://user:[email protected]/' } 

注意它url.parse(theUrl).authurl.parse(theUrl).query.auth你有。

但是,那就是URL本身,就是那個字符串。如果您告訴HTTP庫實際請求該URL,則憑證會被轉換爲HTTP請求標頭,就像URL的其餘部分(如主機,路徑,端口等)都被轉換爲請求的細節並在HTTP請求標頭和正文本身完整的URL無處可查,因爲它分佈在TCP和HTTP層。

說你需要查看請求標題:req.headers.authorization這是一個很長的路要走。 url.parse查看一個簡單的URL字符串,並且您在服務器上擁有的是實際的http.ClientRequest實例。