我正在通过遵循网络上的一些教程来学习angular2。使用 jwt 令牌制作登录页面时,许多示例方法如下:- 当用户输入电子邮件和密码时,提交事件将调用身份验证API- 成功的身份验证将在有效负载中返回具有到期日期的令牌。此令牌存储在本地存储中- 受限路线导航将通过本地存储中的getItem检查经过身份验证的用户,检查令牌是否存在和到期日期
我的问题是:我可以轻松地使用 localstorage 中的令牌进行 jwt.io,稍后将到期号更改为其他内容,复制新生成的令牌并手动粘贴回本地存储项目
我的想法:在任何路由导航之前调用 api token验证,似乎会引入大量服务器调用
了解您的想法
不,你不能那样做。JWT 令牌的全部意义在于它们使用只有服务器知道的密钥进行加密签名。因此,如果您尝试篡改令牌中的到期日期或其他任何内容,服务器将检测到签名不匹配,并将拒绝令牌。
所以是的,你将能够进入受保护的路由,但是一旦你尝试发出HTTP请求,你就会从后端收到一个错误(或者至少你应该得到一个错误(。客户端保护并不是真正的安全措施:组件的代码在下载的捆绑包中无论如何都可用。这是一种符合人体工程学的措施:例如,如果用户无法访问路线,他/她可以自动重定向到登录页面。