Node.JS 中的基本 HTTP 身份验证?
我正在尝试使用 NodeJS 编写一个 REST-API 服务器,就像 Joyent 使用的服务器一样,一切都很好,除了我无法验证普通用户的身份验证。如果我跳转到终端并执行 curl -u username:password localhost:8000 -X GET
,我无法在 NodeJS http 服务器上获取 username:password 值。如果我的 NodeJS http 服务器类似于
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
,我不应该在来自回调的 req 对象中的某个位置获取值 username:password 吗? 如何在不使用 Connect 的基本 http auth 的情况下获取这些值?
I'm trying to write a REST-API server with NodeJS like the one used by Joyent, and everything is ok except I can't verify a normal user's authentication. If I jump to a terminal and do curl -u username:password localhost:8000 -X GET
, I can't get the values username:password on the NodeJS http server. If my NodeJS http server is something like
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
, shouldn't I get the values username:password somewhere in the req object that comes from the callback ?
How can I get those values without having to use Connect's basic http auth ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
用户名:密码作为 Base64 编码字符串包含在授权标头中。
试试这个:
来自 HTTP 身份验证:基本和摘要式访问身份验证 - 第 2 部分基本身份验证方案(第 4-5 页) )
巴科斯-诺尔形式的基本身份验证
The username:password is contained in the Authorization header as a base64-encoded string.
Try this:
From HTTP Authentication: Basic and Digest Access Authentication - Part 2 Basic Authentication Scheme (Pages 4-5)
Basic Authentication in Backus-Naur Form
如果您使用的是 Express,则可以使用 connect 插件(包含在 Express 中):
If you're using express, you can use the connect plugin (included with express):
您可以使用 node-http-digest 进行基本身份验证或 everyauth,如果您的路线图中包含从外部服务添加授权。
You can use node-http-digest for basic auth or everyauth, if adding authorization from external services are in you roadmap.
我将此代码用于我自己的带有身份验证的入门网站。
它做了几件事:
在使用代码之前,npm installexpress
I use this code for my own starter sites with auth.
It does several things:
Before using the code, npm install express
它可以在纯node.js中轻松实现,无需依赖,这是我的版本,基于express.js的这个答案 但经过简化,您可以轻松了解基本思想:
It can be implemented easily in pure node.js with no dependency, this is my version which is based on this answer for express.js but simplified so you can see the basic idea easily:
Restify 框架 (http://mcavage.github.com/node-restify/) 包括用于“基本”和“签名”身份验证方案的授权标头解析器。
The restify framework (http://mcavage.github.com/node-restify/) includes an authorization header parser for "basic" and "signature" authentication schemes.
您可以使用 http-auth 模块
You can use http-auth module