首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Node和Express 4进行基本HTTP身份验证

使用Node和Express 4进行基本HTTP身份验证
EN

Stack Overflow用户
提问于 2014-05-13 02:37:46
回答 8查看 149.8K关注 0票数 145

看起来用Express v3实现基本的超文本传输协议身份验证很简单:

代码语言:javascript
复制
app.use(express.basicAuth('username', 'password'));

版本4(我使用的是4.2)去掉了basicAuth中间件,所以我有点卡住了。我有以下代码,但它不会使浏览器提示用户输入凭据,这正是我想要的(我想旧方法也是这样做的):

代码语言:javascript
复制
app.use(function(req, res, next) {
    var user = auth(req);

    if (user === undefined || user['name'] !== 'username' || user['pass'] !== 'password') {
        res.writeHead(401, 'Access invalid for user', {'Content-Type' : 'text/plain'});
        res.end('Invalid credentials');
    } else {
        next();
    }
});
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-05-13 02:37:46

我使用了原始basicAuth的代码来找到答案:

代码语言:javascript
复制
app.use(function(req, res, next) {
    var user = auth(req);

    if (user === undefined || user['name'] !== 'username' || user['pass'] !== 'password') {
        res.statusCode = 401;
        res.setHeader('WWW-Authenticate', 'Basic realm="MyRealmName"');
        res.end('Unauthorized');
    } else {
        next();
    }
});
票数 34
EN

Stack Overflow用户

发布于 2014-06-26 04:20:35

很多中间件都是从v4的Express核心中提取出来的,并放在不同的模块中。基本的身份验证模块在这里:https://github.com/expressjs/basic-auth-connect

您的示例只需更改为:

代码语言:javascript
复制
var basicAuth = require('basic-auth-connect');
app.use(basicAuth('username', 'password'));
票数 58
EN

Stack Overflow用户

发布于 2014-07-08 18:04:47

我在express 4.0中用http-auth更改了基本身份验证,代码是:

代码语言:javascript
复制
var auth = require('http-auth');

var basic = auth.basic({
        realm: "Web."
    }, function (username, password, callback) { // Custom authentication method.
        callback(username === "userName" && password === "password");
    }
);

app.get('/the_url', auth.connect(basic), routes.theRoute);
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23616371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档