NodeJS Native基本身份验证

时间:2013-08-07 18:29:04

标签: node.js url basic-authentication

是否存在解析基本身份验证的节点本机方式?

步骤将是:

  • 查找身份验证标题
  • 解析编码值
  • 对冒号进行标记并返回用户/传递
  • 也许友好的错误处理/消息传递失败

不寻找Connect / Express框架解决方案。

我意识到手动操作是非常微不足道的,但如果没有重新发明轮子,有一个标准的方法来实现这一目标会很好。

1 个答案:

答案 0 :(得分:0)

所以HTTP身份验证有一个令人困惑的事情。如果您的网址包含此https://user:password@example.com', that will parse just fine with url.parse`:

这样的凭据
 url.parse('https://user:password@example.com')
{ 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:password@example.com/' }

请注意,url.parse(theUrl).auth不是url.parse(theUrl).query.auth

然而,这就是URL本身,只是那个字符串。如果您告诉HTTP库实际请求该URL,则凭据将转换为HTTP请求标头,就像主机,路径,端口等URL的其余部分都将转换为请求的详细信息并在HTTP请求标头和正文本身无法找到完整的URL,因为它遍布TCP和HTTP层。

要说明您需要查看请求标题,这是一个很长的路要走:req.headers.authorizationurl.parse查看一个简单的URL字符串,您在服务器上拥有的是一个实际的http.ClientRequest实例。