我的问题很简单我们应该还是不应该在 JWT 的负载中存储用户对象?
例如:
嵌入了用户对象:
{
iss: "https://YOUR_NAMESPACE",
user: user, // user object from database
aud: "YOUR_CLIENT_ID",
exp: 1372674336,
iat: 1372638336
}
或者只存储用户的唯一 ID 是否更好,如下所示:
仅嵌入用户 ID:
{
iss: "https://YOUR_NAMESPACE",
sub: user.id, //only user id
aud: "YOUR_CLIENT_ID",
exp: 1372674336,
iat: 1372638336
}
JSON Web token 草案规范: https://datatracker.ietf.org/doc/html/draft-ietf-oauth-json-web-token
最佳答案
您可以在 token 中存储有关用户的任何类型的信息,但我认为存储所有用户信息没有用。
由于 HTTP 是无状态的,每次用户连接到您的网站或网络应用程序时, token 都会发送到服务器以对用户进行身份验证。所以这个token应该越小越好(这是JWT的JSON Compact Serialization格式的目的)。
您应该存储用于识别用户的唯一信息,例如其电子邮件地址或其 ID (aud: "YOUR_CLIENT_ID"
)。
在需要时,您可以使用 API 调用或任何其他协议(protocol)向服务器请求有关用户的信息。
关于security - 用户对象应该存储在 JSON Web Token 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25492469/