我正在尝试在我的 expressjs、nodejs 和 angularjs 应用程序中使用 jsonwebtoken 和 express-jwt 为我的用户身份验证实现 json Web 令牌。我阅读了各种文章和教程,现在我对某些事情感到有些困惑。
首先我对 JWT 的理解是它由三个部分组成,以句点分隔:
- 标头:描述 jwt 和算法。
- Payload:包含信息:发行者、受众、到期
- Signature:基于header和payload的签名
因此,每个请求都是使用令牌发出的,该令牌在服务器上进行验证。根据这篇文章,发行人是提出请求的人。在用户认证的情况下,用户是颁发者。现在使用express-jwt中间件,验证请求标头中的令牌并将解码的令牌附加到 req.user:
app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]}));
有效载荷的长度可以是多长?以及如何以及在何处将令牌保存在客户端,以便即使在浏览器关闭后我的会话仍然存在,除非用户注销,例如 Facebook 的“保持登录”?因为我不希望在令牌过期时提示用户再次登录,所以我希望令牌更新,除非用户注销。