为什么要使用双token

两个tokken:

  1. Access Token:短期token,用户直接使用来访问资源,失效需要重新登录获取
  2. Refresh Token:长期token,用来Access token过期后获取新的token

使用双token的原因:

  1. 安全性:通过两个token,可以在不影响用户体验的情况下,减少安全风险
  2. 权限管理:能够更好地管理用户权限
  3. 用户体验:不影响用户体验的前提下,实现后台安全管理和策略调研,用户不需要频繁登录
  4. 灵活性:在需要进行更细粒度的权限控制或者策略调整时,双token系统提供了更多的灵活性
在Node.js中实现Token验证通常是为了增强安全性和用户体验。这种验证机制通常包括两种类型的Token:访问Token(Access Token)和刷新Token(Refresh Token)。访问Token用于访问API接口,而刷新Token用于在访问Token过期后获取新的访问Token。 以下是实现Token机制的一个基本步骤示例: 1. 用户登录成功后,服务器生成一对访问Token和刷新Token并发给客户端。 2. 访问Token具有较短的有效期,用于日常API调用。而刷新Token的有效期更长,用于在访问Token过期后获取新的访问Token。 3. 客户端将访问Token包含在后续的每个HTTP请求的授权头部(Authorization header)中,通常以Bearer模式传输。 4. 当访问Token过期时,客户端使用刷新Token请求新的访问Token。如果刷新Token也过期或被撤销,用户需要重新登录。 5. 服务器接收到刷新Token请求后,验证其有效性,然后生成新的访问Token返回给客户端。 下面是一个简单的Node.js代码示例,展示了如何使用JWT(JSON Web Tokens)来生成和验证Token: ```javascript const jwt = require('jsonwebtoken'); // 生成Token的函数 function generateTokens(userId) { const accessToken = jwt.sign({ userId }, 'access_token_secret', { expiresIn: '15m' }); const refreshToken = jwt.sign({ userId }, 'refresh_token_secret', { expiresIn: '7d' }); return { accessToken, refreshToken }; } // 验证访问Token的函数 function verifyAccessToken(token) { try { return jwt.verify(token, 'access_token_secret'); } catch (error) { // Token验证失败 return null; } } // 验证刷新Token的函数 function verifyRefreshToken(token) { try { return jwt.verify(token, 'refresh_token_secret'); } catch (error) { // Token验证失败 return null; } } // 使用示例 const { accessToken, refreshToken } = generateTokens('123456'); console.log(`Access Token: ${accessToken}`); console.log(`Refresh Token: ${refreshToken}`); const decoded = verifyAccessToken(accessToken); console.log('Access Token verified?', !!decoded); const decodedRefresh = verifyRefreshToken(refreshToken); console.log('Refresh Token verified?', !!decodedRefresh); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值