const { User } = require('./models'); const bcrypt = require('bcryptjs'); async function debugLogin() { try { console.log('=== 调试登录问题 ==='); // 查找用户 const user = await User.findOne({ where: { username: 'admin' } }); if (!user) { console.log('❌ 未找到admin用户'); return; } console.log('✅ 找到admin用户'); console.log('用户名:', user.username); console.log('状态:', user.status); console.log('登录尝试次数:', user.login_attempts); console.log('锁定时间:', user.locked_until); console.log('密码哈希:', user.password); // 测试密码验证 const testPassword = 'Admin123456'; console.log('\n=== 测试密码验证 ==='); console.log('测试密码:', testPassword); // 直接使用bcrypt比较 const directTest = await bcrypt.compare(testPassword, user.password); console.log('直接bcrypt验证:', directTest); // 使用模型方法验证 const modelTest = await user.validPassword(testPassword); console.log('模型验证:', modelTest); if (directTest && modelTest) { console.log('✅ 密码验证成功!'); } else { console.log('❌ 密码验证失败'); // 重新生成密码 console.log('\n=== 重新生成密码 ==='); const newHash = await bcrypt.hash(testPassword, 10); console.log('新哈希:', newHash); await user.update({ password: newHash, status: 'active', login_attempts: 0, locked_until: null }); console.log('✅ 密码已更新'); // 再次验证 const finalTest = await bcrypt.compare(testPassword, newHash); console.log('最终验证:', finalTest); if (finalTest) { console.log('🎉 密码修复成功!'); console.log('用户名: admin'); console.log('密码: Admin123456'); } } } catch (error) { console.error('调试失败:', error.message); console.error('错误堆栈:', error.stack); } process.exit(0); } debugLogin();