你们如何在多个设备上处理同一个用户?除了更改它的设备之外,诸如{admin: true}
之类的数据会变得陈旧吗?
这甚至应该在JWT中吗?如果没有,我们只使用用户ID,那就像基于cookie的会话一样,因为我们将状态存储在服务器上?
答案 0 :(得分:9)
JWT RFC stablish thre类索赔:
已注册的声明,例如fa fa-sticky-note
,sub
,iss
或exp
公开声明,其公开名称或名称registered by IANA包含的值应该是唯一的nbf
,email
或address
。请参阅full list
私密声明和值可能会发生冲突
这些索赔均不是强制性的
JWT是自包含的,应避免使用提供必要数据的服务器会话来执行身份验证(不需要服务器存储和数据库访问)。因此,phone_number
信息可以包含在JWT中。
使用多个设备时,在到期前撤消令牌有多种原因,例如当用户更改管理员删除的密码,权限或帐户时。在这种情况下,您需要一个黑名单或替代机制来拒绝令牌
黑名单可以包含令牌唯一ID role
,或者只是在更新用户的关键数据(密码,权限等)和{{}之后设置条目(jti
- sub
) 1}}。 iss
(不再发送未过期的令牌)时,可以放弃该条目。
以下声明名称已在Section 10.1.
建立的IANA“JSON网络令牌声明”注册表中注册currentTime - maxExpiryTime < last iss
(发行人):确定发行JWT的委托人。currentTime - maxExpiryTime > last_modified
(主题):确定作为JWT主题的主体。必须是唯一的iss
(观众):识别JWT的目标收件人(字符串数组/ uri)sub
(到期时间):标识到期时间(UTC Unix),之后您必须不再接受此令牌。应该是在发布时间之后。aud
(不在之前):标识不得接受JWT的UTC Unix时间exp
(发布于):标识发布JWT的UTC Unix时间nbf
(JWT ID):为JWT提供唯一标识符。 iat