我正在尝试使用jsonwebtoken和express-jwt在我的expressjs,nodejs和angularjs app中为我的用户身份验证实现json web令牌。我阅读了各种文章和教程,现在我对某些事情感到有些困惑。
我对JWT的理解首先是它由以句点分隔的三个部分组成:
因此,每个请求都使用令牌进行,该令牌在服务器上验证。根据{{3}}文章,发行人是提出请求的人。在用户认证的情况下,用户是发行者。现在使用this中间件,在请求标头中验证令牌并将解码后的令牌附加到req.user:
app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]}));
有效载荷的长度可以有多长?以及如何以及在何处在客户端保存令牌,以便即使在浏览器关闭后我的会话仍然存在,除非用户退出,例如Facebook"并且保持登录状态"?因为我不希望在令牌过期时提示用户再次登录,所以除非用户退出,否则我希望令牌续订。
答案 0 :(得分:2)
您可以将JWT存储在持久性cookie或browser local storage中。有效载荷的长度不受JWT本身的限制,而是受存储的限制。请记住,长令牌可能会为您的请求增加大量负载,或者可能需要额外的服务器配置以允许更长的HTTP标头。
如果您不希望JWT令牌过期,请在发布时相应地设置过期时间。如果JWT泄漏,这是一个额外的安全风险,因为用户无法撤销它们。