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