node实现Basic认证

本文介绍如何在Node.js中实现Basic认证,这是一种通过HTTP头部的authorization字段使用base64编码的凭证进行身份验证的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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'));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值