我对传递jwt中的角色/权限有疑问。 由于我希望无状态且性能良好,因此我希望将角色/权限保留在传递给客户端的JWT内。 对于Web请求,我将把JWT放在cookie中,对于Rest API,我将在响应正文中返回JWT。
如果更改用户角色/权限会发生什么?
我考虑过的解决方案之一是向JWT有效负载添加一个TTL(生存时间)字段。 对于Web请求,在下一个Web浏览器请求中,我将从cookie中获取jwt,将其提取,并在TTL通过的情况下,刷新JWT中的用户角色,并放回cookie中,然后在响应中发送回去。
但是我应该在Rest API调用中做什么?有一个通用的解决方案吗?对于API调用,我没有像Web请求这样的机制,浏览器会自动从响应中获取Cookie并将其保存在浏览器中。
我以为可能将新的JWT放在响应标头中,但是与网络浏览器不同,我不能保证客户端将使用新的JWT,这可能会引起一些问题: 1.客户不会意识到新的角色,可能会做出错误的决定 2.客户端可以再次发送旧的JWT,这可能导致服务器端一次又一次刷新角色(我希望服务器端无状态)
请咨询。
谢谢!