我正在尝试使用 express-basic-auth 向我的应用添加基本身份验证。我正在按照 this page 上的说明进行操作,它还说“如果发现请求未被授权,它将使用 HTTP 401 进行响应”,但是当我未通过任何凭据时,我的应用程序仅使用状态代码 200 进行回复
看来我没有正确配置 express-basic-auth。我做错了什么?
const express = require('express')
const app = express()
const port = 3001
const basicAuth = require('express-basic-auth')
app.use(basicAuth({
users: { 'admin': 'supersecret' },
}))
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
最佳答案
您的代码有效。我通过 nodejs 客户端应用程序确认,基本身份验证在提供正确的用户名和密码时有效,并在未提供正确的用户名和密码或未提供用户名和密码时返回 401。
可能的解释是您实际上并没有运行最新的代码,并且有一些以前的服务器仍在运行,不需要基本身份验证。
您可以通过添加
来验证您是否访问了正确的服务器app.use((req, res, next) => {
console.log("got new server");
next();
});
在您的基本身份验证中间件之前,并验证您在尝试请求时在服务器控制台中看到此日志。如果您没有在控制台中看到这个新日志,那么您没有使用最新的代码。
关于express - 如果未提供凭据,如何使用 express-basic-auth 以便我的应用程序返回 401?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69775725/