【问题标题】:Parse-Server capture bad session token requestsParse-Server 捕获错误的会话令牌请求
【发布时间】:2018-11-01 18:34:46
【问题描述】:

有没有办法在远程解析服务器应用程序上捕获错误的会话令牌请求?

不幸的是,错误会话令牌的详细日志仅显示使用了无效会话令牌的非常不详细的错误消息,而所有其他请求将显示用于发出请求的完整标头。我需要获取这些标头,以便识别正在发送的 x-parse-session-token。

我发现我可以添加一些中间件来做这样的事情:

var myMiddleware = function (req, res, next) {
  // extract request headers
  next()
}

app.use(myMiddleware)

但那时我还不知道会话令牌是否有效,而且我认为设置一个完整的额外中间件检查每个通过的会话令牌的有效性并不是有效的在。

任何关于我如何访问这些 x-parse-session-token 标头以获取由于会话令牌错误而失败的请求的提示将不胜感激。

【问题讨论】:

  • docs.parseplatform.org/js/guide/… 查看文档以获取更多想法
  • 感谢@RobertRowntree,但不幸的是,这是一个客户端解决方案,而不是服务器解决方案。我的问题源于客户端上的一些非常老的用户,该用户还没有内置等效的解决方案。我需要抓住这个用户并让他们更新他们的应用程序。有一些后台函数每分钟 ping 我的服务器数百次,因为它知道服务器处于活动状态并且尚未收到成功回调......
  • @RobertRowntree 我正在考虑这样的解决方案作为最后的手段(我的想法已经越来越hackier哈哈),但是由于服务器是由节点模块构建的,因此不确定它有多可行无需对其进行重组,因此 parse-server 模块与部署捆绑在一起,而不是在部署时安装。也许这比我想象的要容易,但对我来说似乎是不可行和危险的。不过,我确实很欣赏这些建议,但并不意味着要忽视您的建议。

标签: parse-server


【解决方案1】:

一种巧妙的方法是在您的中间件中覆盖 req.json 调用。

const myMiddleware = function (req, res, next) {
  const json = res.json;
  res.json = function(object) {
    if (object.code == Parse.Error.INVALID_SESSION_TOKEN) {
      // get the session token
      const token = req.headers['x-parse-session-token'];
      // Invalid token, do something
    }
    // Forward the response
    json.call(res, object);
  }
  next()
}

server = new ParseServer({
   applicationId: YOUR_APP_ID,
   /* more options */
   middleware: myMiddleware
});

// continue initialization here

你觉得这应该可以解决问题吗?

【讨论】:

  • 啊,这看起来可以满足我的需求。我没有意识到我可以将中间件直接添加到 ParseServer 初始化中。我先在本地测试一下。非常感谢!
  • 是的,我们添加了中间件功能,因此可以做到这一点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 2014-06-11
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
相关资源
最近更新 更多