【问题标题】:How to have private endpoints on a public webserver?如何在公共网络服务器上拥有私有端点?
【发布时间】:2021-06-13 11:10:53
【问题描述】:

假设我是一个大多数端点都可以公开访问的 Web 服务器。我希望其中一些只能由我访问(尽管最终可能是一群人)。
我正在寻找最简单的解决方案。例如,我不想实现用户帐户。

网络服务器是用express 和nodejs 实现的。 我用 nginx 运行服务器以防万一,但如果可能的话,在应用程序级别实现它会更好。

【问题讨论】:

  • 您可能正在查看在请求中需要 API 密钥或限制对您 IP 的请求的中间件。
  • ceejayoz,我对中间件不太熟悉,但我现在正在查看文档。你是说添加一个中间件来检查例如包含 API 密钥的查询参数吗?
  • 是的。将其应用于相关路线;中间件基本上可以只是“如果 API 令牌丢失或错误,则拒绝请求”。应该只有几行代码。
  • 是的,听起来不错。请随意“正式”回答,以便我接受

标签: html node.js express nginx webserver


【解决方案1】:

这是一个你可以使用的小 sn-p,在所有私有 API 请求中使用 PassKey 传入 Basic Authorization 标头

const express = require('express')

const app = express()


const tempauth = (req, res, next) => {
    if(!req.headers.authorization || req.headers.authorization.split(" ")[1]!=="PassKey")
    res.status(401).send("Unauthorized")
    else
    next()
}
app.get("/", tempauth, (req, res)=>{
res.send("Access granted")
})

app.listen(3000, ()=>{console.log("Server running on 3000")})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-13
    • 2018-10-11
    • 2013-02-06
    • 2015-09-27
    • 2018-06-10
    • 2014-07-22
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多