【问题标题】:Is it possible to catch unauthorized error through websocket via StompJS (ng2Stomp)?是否可以通过 StompJS (ng2Stomp) 通过 websocket 捕获未经授权的错误?
【发布时间】:2021-03-09 17:49:25
【问题描述】:

我在 Angular 中使用 StompJS ng2-stompjs。请求通过 JWT 身份验证。

我编写了一个 HttpInterceptor,当任何 http 响应返回错误 401 时,它会注销用户。我想用 websocket 实现类似的行为。我的应用程序仅在某些页面上使用 websocket 通信,因此我无法跟踪它们的令牌是否过期。 我还必须使用 Stomp,因为我必须订阅主题,据我所知,通过标准 typescript 或 rxjs websockets 是不可能的。

所以问题如下: 当token出错时,我可以在控制台看到如下错误:

client.js:274 WebSocket 连接到“ws://...”失败:HTTP 身份验证失败;没有可用的有效凭据

如果我启用了调试模式,Stomp 还会在控制台中通知我连接被关闭。但是,当我收到此类身份验证错误时,我想知道代码级别。

在这个 ng2stomp 实现中,我只能找到一个 webSocketErrors$ 主题,该主题会在发生此错误时通知我,但它只发回一个打字稿 Event,没有相关数据。

从这个错误中我无法判断是突然失去连接,还是后端错误,或者用户实际上是未经授权的,因此当我发现这个错误时,我无法强制注销。

我还没有尝试过使用标准的 StompJS 库,但我不确定它是否可以捕捉到这个错误。除了使用 Stomp 之外,我也不知道是否有其他方式可以订阅主题,因为这是我目前找到的唯一解决方案。

感谢任何建议。

【问题讨论】:

    标签: angular websocket stompjs


    【解决方案1】:

    我试图在不编写工作代码的情况下回答。

    有几点:

    ng2-stompjs 是对 StompJs 的薄包装,因此,在能力方面两者不太可能有所不同。

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      相关资源
      最近更新 更多