我有一个node.js应用程序,当basicAuth是节点模块时,它曾经工作过。下面的代码会在访问app时弹出密码和用户名提示。
// start the UI
var app = express();
app.use(express.basicAuth('me', 'openforme'));
app.use(kue.app);
app.listen(3001);
现在将basicAuth作为模块从节点中删除,我使用的是express-basic-auth。当使用下面的代码时,我得到401未经授权的错误,因为它没有像basicAuth那样给我一个用户名和密码弹出提示?
// start the UI
var app = express();
var basicAuth = require('express-basic-auth');
app.use(basicAuth({
users: { 'me': 'openforme' }
}));
app.use(kue.app);
app.listen(3001);
答案 0 :(得分:7)
现在express-basic-auth
中有一个现成的选项。 Challenge属性。
app.use(basicAuth({
challenge: true,
users: { 'me': 'openforme' }
}));
答案 1 :(得分:3)
我知道这对派对来说已经很晚了,但是你可以通过basic-auth
来实现你想要的行为:
const express = require('express')
const auth = require('basic-auth')
const app = express()
// Ensure this is before any other middleware or routes
app.use((req, res, next) => {
let user = auth(req)
if (user === undefined || user['name'] !== 'USERNAME' || user['pass'] !== 'PASSWORD') {
res.statusCode = 401
res.setHeader('WWW-Authenticate', 'Basic realm="Node"')
res.end('Unauthorized')
} else {
next()
}
})