Files
nxxmdata/bank-backend/debug-this-password.js

84 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-09-24 17:49:32 +08:00
const { User } = require('./models');
const bcrypt = require('bcryptjs');
async function debugThisPassword() {
try {
console.log('=== 调试this.password问题 ===\n');
// 1. 获取用户
const user = await User.findOne({ where: { username: 'admin' } });
if (!user) {
console.log('❌ 未找到admin用户');
return;
}
console.log('1. 用户基本信息:');
console.log('用户名:', user.username);
console.log('this.password类型:', typeof user.password);
console.log('this.password值:', user.password);
console.log('this.password长度:', user.password ? user.password.length : 0);
console.log('');
// 2. 测试密码
const testPassword = 'Admin123456';
console.log('2. 测试密码:', testPassword);
console.log('');
// 3. 直接使用bcrypt比较
console.log('3. 直接使用bcrypt比较:');
const directTest = await bcrypt.compare(testPassword, user.password);
console.log('直接bcrypt验证结果:', directTest);
console.log('');
// 4. 检查this.password是否为空或undefined
console.log('4. 检查this.password状态:');
console.log('this.password === null:', user.password === null);
console.log('this.password === undefined:', user.password === undefined);
console.log('this.password === "":', user.password === "");
console.log('this.password存在:', !!user.password);
console.log('');
// 5. 如果this.password有问题重新设置
if (!user.password || user.password === '') {
console.log('5. this.password有问题重新设置...');
const newHash = await bcrypt.hash(testPassword, 10);
console.log('新生成的哈希:', newHash);
await user.update({ password: newHash });
await user.reload();
console.log('更新后的this.password:', user.password);
console.log('更新后的this.password类型:', typeof user.password);
console.log('');
}
// 6. 再次测试
console.log('6. 再次测试密码验证:');
const finalTest = await user.validPassword(testPassword);
console.log('最终验证结果:', finalTest);
// 7. 手动测试bcrypt
console.log('7. 手动测试bcrypt:');
const manualTest = await bcrypt.compare(testPassword, user.password);
console.log('手动bcrypt验证结果:', manualTest);
if (finalTest && manualTest) {
console.log('🎉 密码验证成功!');
} else {
console.log('❌ 密码验证失败');
console.log('可能的原因:');
console.log('- this.password为空或undefined');
console.log('- 数据库更新失败');
console.log('- Sequelize模型问题');
}
} catch (error) {
console.error('调试失败:', error.message);
console.error('错误堆栈:', error.stack);
}
process.exit(0);
}
debugThisPassword();