Angular 和 JWT - 客户端如何验证令牌?

Angular and JWT - how does client verify token?

如果我要提供伪造的 JWT,我意识到 Angular 会 "accept it" 登录,因为大多数教程只是检查是否在 localStorage 中设置了 JWT 密钥(以及它是否未过期。 )

我在使用 JWT 时是否遗漏了什么?我觉得客户端需要检查令牌是否真的来自服务器。考虑这种情况:

用户使用类似于 {'username': 'hacker', 'role': 'admin'} 的假 JWT 前往路由 /#/admin。现在用户向服务器发送令牌,服务器检查签名(和过期时间),由于秘密签名密钥错误,用户收到来自(API)服务器的 401/403 响应,客户端挂起(带有工具栏的空白屏幕),因为没有来自服务器的有效响应。

这是 "safe" 还是 "okay" 用户可以使用假的 JWT 绕过我的 Guard,因为他们无论如何都无法从服务器获取任何数据?

其实很正常

如果用户的令牌被服务器拒绝,您应该将他注销。

即使他可以通过守卫,他也永远不会从您的管理面板获得任何数据,因为服务器应该因 JWT 无效而拒绝每一个请求。所以你不用担心。