Files
nxxmdata/bank-backend/fix-password-final.js
2025-09-24 17:49:32 +08:00

83 lines
2.6 KiB
JavaScript

const { User } = require('./models');
const { sequelize } = require('./config/database');
const bcrypt = require('bcryptjs');
async function fixPasswordFinal() {
try {
console.log('=== 最终修复密码问题 ===\n');
const testPassword = 'Admin123456';
console.log('目标密码:', testPassword);
// 1. 生成新的密码哈希
const newHash = await bcrypt.hash(testPassword, 10);
console.log('1. 新生成的哈希:', newHash);
console.log('哈希长度:', newHash.length);
// 2. 验证新生成的哈希
const hashValid = await bcrypt.compare(testPassword, newHash);
console.log('2. 新哈希验证:', hashValid);
if (!hashValid) {
console.log('❌ 生成的哈希无效,退出');
return;
}
// 3. 直接使用SQL更新密码
console.log('3. 直接使用SQL更新密码...');
const [affectedRows] = await sequelize.query(
'UPDATE bank_users SET password = ?, status = ?, login_attempts = 0, locked_until = NULL WHERE username = ?',
{
replacements: [newHash, 'active', 'admin'],
type: sequelize.QueryTypes.UPDATE
}
);
console.log('SQL更新影响行数:', affectedRows);
// 4. 验证数据库更新
console.log('4. 验证数据库更新...');
const [results] = await sequelize.query(
'SELECT username, password, status, login_attempts FROM bank_users WHERE username = ?',
{
replacements: ['admin'],
type: sequelize.QueryTypes.SELECT
}
);
if (results) {
console.log('数据库中的数据:');
console.log('用户名:', results.username);
console.log('状态:', results.status);
console.log('登录尝试次数:', results.login_attempts);
console.log('密码哈希:', results.password);
console.log('哈希长度:', results.password.length);
// 5. 验证更新后的密码
const dbValid = await bcrypt.compare(testPassword, results.password);
console.log('5. 数据库密码验证:', dbValid);
if (dbValid) {
console.log('🎉 密码修复成功!');
console.log('\n=== 登录信息 ===');
console.log('用户名: admin');
console.log('密码: Admin123456');
console.log('状态: active');
console.log('现在可以尝试登录了!');
} else {
console.log('❌ 密码验证仍然失败');
}
} else {
console.log('❌ 查询数据库失败');
}
} catch (error) {
console.error('修复失败:', error.message);
console.error('错误堆栈:', error.stack);
}
process.exit(0);
}
fixPasswordFinal();