45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
const jwt = require('jsonwebtoken');
|
||
|
||
// 配置 JWT 的密钥和选项
|
||
const JWT_SECRET = '29A89SJDEI23HUEF9'; // 替换为你的密钥
|
||
const JWT_EXPIRES_IN = '24h'; // Token 的过期时间
|
||
|
||
/**
|
||
* 生成 JWT Token
|
||
* @param {Object} payload - 要包含在 Token 中的数据(如 userId)
|
||
* @returns {string} 生成的 JWT Token
|
||
*/
|
||
function generateToken(payload) {
|
||
try {
|
||
return jwt.sign(payload, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN });
|
||
} catch (error) {
|
||
console.error('生成 Token 时出错:', error);
|
||
throw new Error('生成 Token 失败');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 验证 JWT Token 并返回解码后的 user_id
|
||
* @param {string} token - 客户端传递的 JWT Token
|
||
* @returns {number} 解码后的 user_id
|
||
* @throws {Error} 如果验证失败抛出错误
|
||
*/
|
||
function verifyToken(token) {
|
||
try {
|
||
const decoded = jwt.verify(token, JWT_SECRET);
|
||
if (!decoded.userId) {
|
||
return { error: 'Token 中未包含 user_id' };
|
||
}
|
||
return { userId: decoded.userId };
|
||
} catch (error) {
|
||
console.error('验证 Token 时出错:', error.message);
|
||
return { error: '无效或过期的 Token' };
|
||
}
|
||
}
|
||
|
||
|
||
module.exports = {
|
||
generateToken,
|
||
verifyToken,
|
||
};
|