gpt4 book ai didi

javascript - Express "BasicAuth"并异步检查凭证

转载 作者:行者123 更新时间:2023-12-03 11:01:28 25 4
gpt4 key购买 nike

我正在将 Express 从 3.x 迁移到 4.x,由于 Express 4 没有 basicAuth,我尝试将其替换为 basic-auth module .

我遇到的问题是异步检查凭据(通过我的 user_tools.checkCredentials() 方法)。

这就是它在 3.x 中工作的方式:

var auth = function(req, res, next) {
isFromLAN(req.ip, function(fromLAN) {
if (fromLAN) {
// console.log('LAN --> no auth needed');
next();
} else {
// console.log(req.ip + ' --> WAN --> auth to pass');
basicAuth(function(user, pass, callback) {
user_tools.checkCredentials(user, pass, function(valid) {
callback(null, valid);
});
})(req, res, next);
}
});
};

当前代码,在 checkCredentials 处默默失败:

var express = require('express');
var basicAuth = require('basic-auth');
var user_tools = require('./user-tools');

var app = express();

var auth = function(req, res, next) {
function isFromLAN(ip) {
console.log('isFromLAN()', ip);
if (ip === '127.0.0.1') {
return true;
}
return false;
}

if (isFromLAN(req.ip)) {
// console.log('LAN --> no auth needed');
next();
} else {
console.log(req.ip + ' --> WAN --> auth to pass');

function unauthorized(res) {
console.log('unauthorized --> 401');
res.set('WWW-Authenticate', 'Basic realm=Authorization Required');
return res.sendStatus(401);
}

var user = basicAuth(req);
console.log('basicAuth user:', user);

if (!user || !user.name || !user.pass) {
console.log('!user');
return unauthorized(res);
}

user_tools.checkCredentials(user.name, user.pass, function(valid) {
console.log('valid:', valid);
if (valid) {
return next();
} else {
return unauthorized(res);
}
});
}
};

app.get('/restricted_api/:value', auth, function(req, res) {
// do authorised stuff
});

最佳答案

问题是 bcrypt.compare 花费了 1 分钟,这导致我假设请求已退出。

使用较小的轮次值(对于种子,在对密码进行哈希处理时)可以让我的比较操作的响应时间更快。

仅供引用,当使用轮数(10 --> 2^10 轮)的默认值将密码与使用种子创建的哈希值进行比较时,在我的 Raspberry Pi 上花费了 1 分钟。另一方面,使用 5 (2^5) 轮种子进行哈希处理的密码给了我 1 秒的 compare() 响应。

关于javascript - Express "BasicAuth"并异步检查凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com