2025-02-01 13:09:28 +08:00

45 lines
1.2 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
};