如何使用node.js中的基本身份验证从URL获取用户名和密码?

时间:2014-10-01 16:11:39

标签: javascript node.js

我需要获取浏览器从网址发送到我的node.js应用程序的用户名和密码。

我挖掘了各种文档和对象,但我找不到任何有用的东西。有谁知道怎么做?使用身份验证标头不是一种选择,因为现代的bowsers不会设置它们。

https://username:password@myurl.com/
        =================
//         /\
//         ||
// I need this part

感谢您的帮助!

6 个答案:

答案 0 :(得分:2)

此身份验证方法称为“基本身份验证”。您可以使用以下代码通过basic-auth npm软件包访问用户名和密码:

const express = require('express');
const basicAuth = require('basic-auth');
let app = express();
app.get('/', function (req, res) {
    let user = basicAuth(req);
    console.log(user.name); //prints username
    console.log(user.pass); //prints password
});
app.listen(3000, function () {});

现在,如果您向http://username:password@localhost:3000/发送请求,则此代码将在控制台中打印您的用户名和密码。

请注意,大多数浏览器不再支持这种身份验证方法。

答案 1 :(得分:1)

这正是您所寻找的:

http://nodejs.org/api/url.html

如果你想知道从哪里获取URL本身,它会在请求对象中传递,也称为“路径”:

Node.js: get path from the request

答案 2 :(得分:1)

用户名:密码作为base64编码的字符串包含在Authorization标头中:

http.createServer(function(req, res) {
  var header = req.headers['authorization'] || '',        // get the header
      token = header.split(/\s+/).pop()||'',            // and the encoded auth token
      auth = new Buffer(token, 'base64').toString(),    // convert from base64
      parts=auth.split(/:/),                          // split on colon
      username=parts[0],
      password=parts[1];

  res.writeHead(200,{'Content-Type':'text/plain'});
  res.end('username is "'+username+'" and password is "'+password+'"');

}).listen(1337,'127.0.0.1');

请参阅此帖子:Basic HTTP authentication in Node.JS?

答案 3 :(得分:1)

Store pictures in H2 database spring boot thymleafIE不再支持<img th:if="*{photo != null}" th:src="@{'data:image/jpg;base64,' + * {T(org.springframework.util.Base64Utils). encodeToString(photo)}}"/> 格式,如果还没有其他人效仿的话,也不会感到惊讶。

(摘自T.J. Crowder评论Chrome

答案 4 :(得分:0)

/createserver/:username/:password

let params={
userName:req.params.username,
password:req.params.password
}
console.log(params);

这就是您想要的吗??

答案 5 :(得分:-2)

服务器可以在请求对象中访问URL:

http.createServer(function(req, res) {
    var url = req.url
    console.log(url) //echoes https://username:password@myurl.com/
    //do something with url
}).listen(8081,'127.0.0.1');