javascript - 使用 Node.js 和 restify 进行基本身份验证

标签 javascript node.js basic-authentication restify

我目前正在使用 NodeJS 和 restify 开发 RESTful Web 服务.

我已使用 node-mysql 为数据库启动并运行所有内容,但我还想实现 HTTP 基本身份验证。

我只用 Apache 和一个 .htaccess 文件做了一次。

但是这里的网络服务器带有 restify,我这样启动它:

var server = restify.createServer({
  name: 'my webservice'
});

restify 文档 (http://mcavage.me/node-restify/#Bundled-Plugins) 中列出了一个身份验证解析器插件,但我不知道如何使用它。

req.username 值始终设置为匿名,即使我使用 http://user:pass@url...

如果我可以将它与 .htpasswd 文件一起使用来存储/访问用户并通过。

有谁知道如何用 restify 或其他模块实现这个?

最佳答案

最后我找到了一种不需要任何额外模块的方法。

首先我发送正确的标题:

var auth = req.headers['authorization'];
res.statusCode = 401;
res.setHeader('WWW-Authenticate', 'Basic realm="Secure Area"');
res.end('need creds');

然后我检查用户并通过,如果没问题则发送正确的状态码

res.statusCode = 200;  // OK

如果密码不正确:

  res.statusCode = 401; // Force them to retry authentication
  res.setHeader('WWW-Authenticate', 'Basic realm="Secure Area"');
  res.end('<html><body>You shall not pass</body></html>');

这很好用。我只是在阅读 .htpasswd 和加密密码时遇到了一些麻烦。 有谁知道如何根据 .htpasswd 文件检查普通密码?

关于javascript - 使用 Node.js 和 restify 进行基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22992094/

相关文章:

javascript - Facebook 库 : Uncaught RangeError: Maximum call stack size exceeded

javascript - 在顶部检测滚动事件(移动)

php - 如何在 Symfony 中配置基本身份验证以允许空密码?

node.js - OpenAI ChatGPT (GPT-3.5) API 错误 400 : "Request failed with status code 400"

node.js - Express、node.js 和 redis : Separated function to access data

java - 在公司代理 HTTP 客户端 java 下进行基本身份验证

javascript - UIWebview 不会通过基本身份验证加载动态加载的资源(通过 jQuery Mobile)

javascript - 我可以使用另一个 _.get 作为 lodash _.get 的默认值吗?

javascript - 使用 jQuery 滚动时如何为每个 anchor 设置不同的偏移量

node.js - 如何从 Rally API 获取相关对象