我目前正在使用NodeJS开发RESTful Web服务并进行解析.
我已经为数据库启动并运行了node-mysql,但我也希望实现HTTP Basic身份验证.
我只用Apache和一个.htaccess
文件做了一次.
但是在这里,网络服务器带来了解决方案,我这样开始:
var server = restify.createServer({ name: 'my webservice' });
在restify文档(http://mcavage.me/node-restify/#Bundled-Plugins)中列出了一个Authentication Parser插件,但我无法弄清楚如何使用它.
req.username
即使我使用,该值也始终设置为匿名http://user:pass@url...
.
最好的办法是,如果我可以将它与.htpasswd
文件一起使用来存储/访问用户并通过.
有谁知道如何用restify或其他模块实现这个?
最后,我找到了一种方法,无需任何额外的模块.
首先我发送correkt标头:
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('You shall not pass');
这非常有效.我只是在阅读.htpasswd和加密密码时遇到一些麻烦.有谁知道如何检查.htpasswd文件的普通密码?