2025年token 过期的处理方案有哪些?

token 过期的处理方案有哪些?1 刷新令牌 Refresh Token 在用户登录时 除了发放一个访问令牌 Access Token 以外 再发放一个刷新令牌 Refrsh Token 访问令牌的有效期比较短 刷新令牌的有效期比较长 当访问令牌过期时

大家好,我是讯享网,很高兴认识大家。

1、刷新令牌(Refresh Token)

        在用户登录时,除了发放一个访问令牌(Access Token)以外,再发放一个刷新令牌(Refrsh Token)。

        访问令牌的有效期比较短,刷新令牌的有效期比较长。

        当访问令牌过期时,使用刷新令牌向服务器请求新的访问令牌。如果刷新令牌也过期,则跳转回登录界面。

        这种方式的优点是可以避免用户频繁登录,但需要妥善保管刷新令牌,因为它的安全性比访问令牌更高。

2、滑动窗口

        用户每次使用使用访问令牌时,服务器都会更新访问令牌的过期时间。


讯享网

        这种方式的优点是用户只要频繁访问,就不需要登录,但可能会增加服务器负担。

3、重新登录

        当访问令牌过期时,跳转回登录界面,让用户重新登录。这是最简单的一种方式,但可能会影响用户体验。

以下是使用刷新令牌的示例:

const jwt = require('jsonwebtoken'); const secret = 'your-secret-key'; const refreshSecret = 'your-refresh-secret-key'; // 用户登录 app.post('/login', (req, res) => { const { username, password } = req.body; // 验证用户名和密码 const user = authenticate(username, password); if (user) { // 创建 JWT const token = jwt.sign({ id: user.id }, secret, { expiresIn: '1h' }); const refreshToken = jwt.sign({ id: user.id }, refreshSecret, { expiresIn: '7d' }); // 将 JWT 和刷新令牌发送给用户 res.json({ token, refreshToken }); } else { res.status(401).send('Invalid credentials'); } }); // 刷新令牌 app.post('/refresh', (req, res) => { const { refreshToken } = req.body; // 验证刷新令牌 jwt.verify(refreshToken, refreshSecret, (err, decoded) => { if (err) { res.status(401).send('Invalid refresh token'); } else { // 创建新的 JWT const newToken = jwt.sign({ id: decoded.id }, secret, { expiresIn: '1h' }); res.json({ token: newToken }); } }); });

讯享网

小讯
上一篇 2025-02-21 08:01
下一篇 2025-03-05 23:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/56228.html