Files
nxxmdata/bank-backend/debug-login.js
2025-09-24 17:49:32 +08:00

74 lines
2.1 KiB
JavaScript

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();