我了解 JWT 可以包含一些有关要在服务器上验证的用户 Angular 色的信息,例如在范围
中,这样非 Angular 色用户将无法从受该 Angular 色保护的某些端点访问数据。
{
"iss": "http://issuer.com",
"exp": 1300819380,
"scopes": ["customer", "supplier", "seller"],
"sub": "user@issuer.com"
}
所以数据是安全的。但假设我有一个仪表板,我想阻止用户查看其功能。
考虑到 JWT 可能会被客户端篡改,您如何在 SPA 中保护此类页面?
最佳答案
正如您所指出的,客户端代码可能会被篡改,因此对于限制用户访问的逻辑来说,它不是一个安全的地方。
假设仪表板的功能实际上是 API 提供的功能(例如,查看通过 GET 请求检索的数据,或通过 POST、PUT、DELETE 请求操作数据),您可以改为保护这些 API 端点。因此,即使恶意用户篡改了客户端代码,他们也不会获取或更改任何 protected 数据。
但是对于您关于如何保护 SPA 中页面的具体问题,没有这样的方法。即使代码被混淆了,老练的用户仍然可以随意剖析和修改。
关于javascript - 客户端 JWT 基于角色的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42080674/