【问题标题】:Authenticate all Request to REST API with no username/password to get any token在没有用户名/密码的情况下验证所有对 REST API 的请求以获取任何令牌
【发布时间】:2018-05-11 12:09:21
【问题描述】:

我正在销售产品,API 从节点后端获取产品并显示在 Angular 前端,后端集中且 Angular 前端位于多个域上,我需要验证从我的 Angular 前端发出的所有请求-end 到节点后端。用户没有帐户。我需要确保没有其他人通过 POSTMAN 或其他服务复制产品数据。 JWT 无法工作,因为请求被公开,因此可以复制令牌,因此无法进行身份验证。我只需要我的角度前端就可以发出请求,并且我可以验证请求的来源。谁能建议我接下来应该尝试什么?任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: angularjs node.js rest api authentication


    【解决方案1】:

    也许像检查原始 IP 地址之类的?您应该能够通过类似的方式在 Node Express 后端获取 IP

    if (req.ip == 127.0.0.1) // whatever IP your angular app is hosted at
    

    【讨论】:

      【解决方案2】:

      您可以尝试通过 CORS 属性将前端域列入白名单,或使用中间件检查请求 url。

      中间件示例

      var whitelistedURL = ['abc.com','abc.xyz']
      function(req, res, next){
          if(whitelistedURL.indexOf(req.originalUrl)==-1){
              res.send({
                  status: 'Unauthorised'
              })
          }else{
              next()
          }
      }
      

      【讨论】:

      • 感谢您的回复,但 req.originalUrl 会让您查询像 abc.com/test 这样的 URL,它会返回 test 并且名称 abc.com 可以通过在邮递员中添加 x-forwarding 标头来进行欺骗。 expressjs.com/en/api.html#req.originalUrl
      猜你喜欢
      • 2021-01-04
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 2018-04-14
      • 2012-09-12
      • 1970-01-01
      相关资源
      最近更新 更多