用Node实现basic认证
Basic认证是简单的认证机制,借助带有base64编码认证信息的http头部authorization字段进行认证。
以下是一个basic认证的中间函数
// Basic认证
function restrict(req, res, next) {
let authorization = req.headers.authorization;
console.log(authorization);
if(!authorization){
console.log('authorization');
res.setHeader('WWW-Authenticate','Basic realm="Secure Area"');
res.writeHead(401);
res.end();
//return next(new Error('Unauthorized'));
}else {
let parts = authorization.split(' ');
let scheme = parts[0];
let auth = new Buffer(parts[1], 'base64').toString().split(':');
let user = auth[0];
let pass = auth[1];
// 模拟数据库中的记录检查认证信息
authenticateWithDatabase(user, pass, function(err) {
if(err) {
return new Error();
}
// 认证信息有效
next();
});
}
}
function authenticateWithDatabase(user, pass, cb) {
console.log('%s %s', user, pass);
if(user==='123' && pass==='123') {
cb();
}else {
cb(new Error('err'));
}
}