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

84 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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