NodeJS express:限制对路由的访问

Posted

技术标签:

【中文标题】NodeJS express:限制对路由的访问【英文标题】:NodeJS express: limiting access to route 【发布时间】:2019-07-10 06:20:00 【问题描述】:

我正在创建一个 express 项目,并且我有一些路由可以通过 ajax 向前端控制器提供数据,例如它们以 /get_data 开头。

所以我的问题是如何保护这些路线?任何人都可以轻松访问它们。我试着做

app.use((req, res, next) => 
    if(!req.xhr) res.sendStatus(404);
    else next();
)

但这并不能阻止来自其他站点的 ajax 调用来访问数据。那么如何让它更安全呢?如果不可能,我可以通过什么方式向前端提供数据?

【问题讨论】:

【参考方案1】:

一个选项是使用 CORS(有一个 express middleware)。因此,您可以将路由配置为仅接受来自特定来源的请求。但产地是可以伪造的。

如果您有一些敏感数据,您可以考虑在您的应用程序中添加身份验证(可能还有授权)。有很多实现方式,例如流行的Passport.js 库。

How to implement a secure REST API with node.js 的回复中也有一些细节。

【讨论】:

以上是关于NodeJS express:限制对路由的访问的主要内容,如果未能解决你的问题,请参考以下文章

nodejs 挂载不同路由

Nodejs express 获取url参数,post参数的三种方式

NodeJs中的express框架获取http参数

node跨域cors模块,nodejs+express跨域

NodeJS + Express - 将会话中间件应用于某些路由

带你入门nodejs第三天—express路由