在我的nodejs app中,我使用jwt令牌进行身份验证。现在,在创建令牌之后,它将被验证。为此,应将其存储在某处以进行验证。所以,我的问题是,我应该将它存储在针对相关用户ID的单独数据库模式中,还是应该将其存储在其他地方?
答案 0 :(得分:7)
JWT不需要存储在服务器端。当您创建JWT时,您使用秘密对其进行加密 - 将其视为"密码。"然后将其发送到可以存储它的客户端。
当客户端发出请求时,它会发送JWT。在服务器端,您可以使用相同的秘密对其进行解密。如果秘密不起作用,您知道它是无效的JWT。
出于显而易见的原因,你的JWT秘密应该保密!执行此操作的最佳方法是将其存储为环境变量。
答案 1 :(得分:1)
无需在服务器端存储JWT。这就是JWT在服务器端启用“异步”令牌验证的重点。
以下是一系列步骤,以简化的方式进行:
1-服务器使用密钥创建JWT(如果服务器节点多于一个,则保持此秘密很重要,因为客户端可以使用给定的JWT连接到其中任何一个服务器)
2-客户端存储此JWT并将其提供给后续的服务器请求
3-服务器(或服务器场中的任何给定服务器节点)根据先前用于加密/创建JWT的秘密来验证传入的JWT
HTH