节点JS Express安全路由

时间:2019-12-01 16:24:17

标签: node.js express authentication routes

我想通过某种身份验证来创建受保护的路由。

例如,应保护GET /forecastweather。而GET /generalweather不应该。

我阅读了Express 4.x文档(https://expressjs.com/en/4x/api.html),但是找不到身份验证功能。我还查看了req(https://expressjs.com/en/4x/api.html#req)文档,以查看是否有可以请求使用的属性。

如果我是对的,express具有基本的auth功能,但是它似乎已经消失了。用某种不记名令牌保护路由的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

没有进行身份验证的“最佳”方法。仅有多种不同的方式,您必须决定哪种方式最适合您的情况。

首先,您需要确定如何提供凭据,这可能取决于您使用的客户端类型。

  1. cookie中的令牌(通常最适合浏览器访问)
  2. 自定义标头中的令牌(通常用于API的编程访问)
  3. 查询参数中的令牌(不常见)

一旦决定了令牌的交付方式,则必须弄清楚客户端将如何获取令牌。通常,这是某种形式的表单提交,其中包含凭据(例如用户名和密码),并且成功验证这些凭据后返回的就是令牌。

要处理此表单,您需要在Express中创建一个POST请求处理程序并验证凭据,如果凭据有效,则返回令牌。

然后,在Express中,您将创建一个包含经过身份验证的路由的路由器,并向该路由器添加一些中间件,以在允许请求继续进行之前验证请求上是否存在有效令牌。这将保护此路由器上的所有路由。