Mar*_*coS 6 javascript access-token jwt reactjs refresh-token
我在博客(此处)中看到有关使用 JWT 在 React 中进行身份验证的内容,此设置:访问令牌到期时间为 15 分钟,刷新令牌到期时间为 1 个月;每 10 分钟客户端调用/refreshToken端点一次,检查刷新令牌是否仍然有效(否则用户将看到登录屏幕)。
在服务器上,/refreshToken端点正确检查刷新令牌是否未过期,刷新令牌有效负载中具有 ID 的用户仍然存在且有效(即:传递的刷新令牌存在于其刷新令牌数组中)。如果一切正常,则会生成一个新的访问令牌,并与响应一起发回。
到目前为止,一切都很好。但是,在返回响应之前,也会生成一个新的刷新令牌,并将旧的刷新令牌替换到用户的刷新令牌数组中...我认为这种策略是有缺陷的,因为这样用户就永远不会看到他的登录过期,即使在之后刷新令牌(本例中为一个月)将过期...
我确实做了一些测试(将 1 个月值降低到 30 分钟),并且实际上用户授权永远不会过期...强制注销用户删除其刷新令牌数组显然效果很好,但我希望刷新时会注销令牌按年龄过期。
我询问我的理解是否正确(服务器上的refreshToken端点不应刷新刷新令牌,而应仅刷新访问令牌),或者我是否错过了某些内容。
@Ghero 评论后更新:我明白你的观点...但是如果不更新令牌的过期时间,为什么要刷新令牌呢?
然而,博客的代码用于更新刷新令牌:
const jwt = require("jsonwebtoken");
exports.getRefreshToken = (user) => {
const refreshToken = jwt.sign(user, process.env.REFRESH_TOKEN_SECRET, {
expiresIn: eval(process.env.REFRESH_TOKEN_EXPIRY),
});
return refreshToken;
};
// REFRESH_TOKEN_EXPIRY is set to 30 days
Run Code Online (Sandbox Code Playgroud)
看起来总是把到期日期推迟到未来30天。这样就永远不会过期了...