2015-01-14 41 views
0

我想在我的expressjs,nodejs和angularjs应用程序中使用jsonwebtoken和express-jwt为我的用户身份验证实现json Web令牌。我阅读了各种文章和教程,现在我对某事有些困惑。如何在浏览器关闭后记住用户使用jwt?

什么,我明白那智威汤逊首先是它是由按周期分开三个部分组成:

  1. 标题:介绍了智威汤逊和算法。
  2. 有效载荷:包含的信息:发行人,观众,到期
  3. 签名:签名基于头部和有效载荷

所以每次请求与令牌,这在服务器验证发。根据this文章,发行人是提出请求的人。在用户认证的情况下,用户是发行者。现在,使用express-jwt中间件,验证在请求报头中的标记并附加解码令牌req.user:

app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]})); 

多久可以是有效载荷的长度?我如何以及在哪里将令牌保存在客户端,所以即使在浏览器关闭后,我的会话仍然存在,除非用户注销,如Facebook的“保持登录状态”?因为我不想让用户再次登录,如果令牌过期,我希望令牌更新,除非用户注销。

回答

2

您可以将JWT存储在持久性cookie或browser local storage中。有效负载的长度不受JWT本身的限制,而受存储的限制。请记住,长记号可能会给您的请求增加重要的负载,或者可能需要额外的服务器配置才能允许超长的HTTP标头。

如果您不希望JWT令牌过期,请在发出它们时相应地设置到期时间。如果JWT由于用户无法撤销而泄漏,则这会增加安全风险。

+0

我希望智威汤逊坚持不懈。因为我不想提示用户登录,除非他退出系统。浏览器关闭后jwt是否会被销毁,如果我们将它存储在localStorage中? – Pravin

+0

正如w3schools页面所述:HTML本地存储提供了两个对象用于在客户端存储数据:(1)window.localStorage - 存储没有过期日期的数据和(2)window.sessionStorage - 存储一个会话的数据(数据是当标签关闭时丢失)。所以 - 是的,当浏览器窗口关闭时localStorage不会丢失。 –

+0

哦好吧...谢谢... – Pravin

相关问题