83 lines
2.6 KiB
JavaScript
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();
|