express - 如果未提供凭据,如何使用 express-basic-auth 以便我的应用程序返回 401?

标签 express

我正在尝试使用 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/

相关文章:

javascript - Sails.js - 文件上传

node.js - 从 Angular 2 中使用 html-pdf 创建的 Node/express 后端接收文件

javascript - promise 解决未定义,但数据仍已过帐

javascript - ExpressJS 下面是什么?

javascript - Express 3 的跨 session 问题

javascript - 如何一个接一个地执行查询并处理该数据?

node.js - 我应该将 JWT token 存储在 redis 中吗?

node.js - 如何在ubuntu上安装express js?

javascript - 如何在 NestJS 中为每个新的 HTTP 请求使用新实例?

node.js - Express.js 4 : catch bodyParser error in router's errorHandler