如何在浏览器关闭后记住用户使用 jwt?
How to remember user using jwt even after browser closes?
我正在尝试在我的 expressjs、nodejs 和 angularjs 应用程序中使用 jsonwebtoken 和 express-jwt 为我的用户身份验证实施 json 网络令牌。我阅读了各种文章和教程,现在我对某些事情有点困惑。
首先我对 JWT 的了解是它由三个部分组成,以句点分隔:
- Header:描述jwt和算法。
- 有效负载:包含 information:issuer、观众、到期时间
- 签名:基于header和有效负载
的签名
因此每个请求都是使用令牌发出的,令牌在服务器上进行验证。根据 this article, issuer is the one who makes request. In case of user authentication, user is the issuer. Now using express-jwt 中间件,验证请求中的令牌 header 并将解码后的令牌附加到 req.user:
app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]}));
payload的长度可以有多长?以及如何以及在何处保存客户端令牌,以便我的 session 即使在浏览器关闭后仍然存在,除非用户注销,就像 facebook 的 "keep logged in" 一样?因为我不希望在令牌过期时提示用户重新登录,所以我希望令牌续订,除非用户注销。
您可以将 JWT 存储在持久性 cookie 中或 browser local storage。有效负载的长度不受 JWT 本身的限制,而是受存储的限制。请记住,长令牌可能会给您的请求增加大量负载,或者可能需要额外的服务器配置以允许超长 HTTP headers.
如果您不希望 JWT 令牌过期,请在发布时相应地设置过期时间。如果 JWT 因用户无法撤销而泄露,这会带来额外的安全风险。
我正在尝试在我的 expressjs、nodejs 和 angularjs 应用程序中使用 jsonwebtoken 和 express-jwt 为我的用户身份验证实施 json 网络令牌。我阅读了各种文章和教程,现在我对某些事情有点困惑。
首先我对 JWT 的了解是它由三个部分组成,以句点分隔:
- Header:描述jwt和算法。
- 有效负载:包含 information:issuer、观众、到期时间
- 签名:基于header和有效负载 的签名
因此每个请求都是使用令牌发出的,令牌在服务器上进行验证。根据 this article, issuer is the one who makes request. In case of user authentication, user is the issuer. Now using express-jwt 中间件,验证请求中的令牌 header 并将解码后的令牌附加到 req.user:
app.use(expressJwt({ secret: jwtSecret }).unless({ path: [ '/login' ]}));
payload的长度可以有多长?以及如何以及在何处保存客户端令牌,以便我的 session 即使在浏览器关闭后仍然存在,除非用户注销,就像 facebook 的 "keep logged in" 一样?因为我不希望在令牌过期时提示用户重新登录,所以我希望令牌续订,除非用户注销。
您可以将 JWT 存储在持久性 cookie 中或 browser local storage。有效负载的长度不受 JWT 本身的限制,而是受存储的限制。请记住,长令牌可能会给您的请求增加大量负载,或者可能需要额外的服务器配置以允许超长 HTTP headers.
如果您不希望 JWT 令牌过期,请在发布时相应地设置过期时间。如果 JWT 因用户无法撤销而泄露,这会带来额外的安全风险。