81 lines
2.9 KiB
JavaScript
81 lines
2.9 KiB
JavaScript
const { User } = require('./models');
|
||
const bcrypt = require('bcryptjs');
|
||
|
||
async function testDatabaseStorage() {
|
||
try {
|
||
console.log('=== 测试数据库存储问题 ===\n');
|
||
|
||
// 1. 生成一个新的密码哈希
|
||
const testPassword = 'Admin123456';
|
||
const newHash = await bcrypt.hash(testPassword, 10);
|
||
console.log('1. 生成新的密码哈希:');
|
||
console.log('原始密码:', testPassword);
|
||
console.log('生成的哈希:', newHash);
|
||
console.log('哈希长度:', newHash.length);
|
||
console.log('');
|
||
|
||
// 2. 验证新生成的哈希
|
||
console.log('2. 验证新生成的哈希:');
|
||
const isValid = await bcrypt.compare(testPassword, newHash);
|
||
console.log('新哈希验证结果:', isValid);
|
||
console.log('');
|
||
|
||
// 3. 更新数据库
|
||
console.log('3. 更新数据库:');
|
||
const user = await User.findOne({ where: { username: 'admin' } });
|
||
if (!user) {
|
||
console.log('❌ 未找到admin用户');
|
||
return;
|
||
}
|
||
|
||
await user.update({ password: newHash });
|
||
console.log('✅ 数据库已更新');
|
||
console.log('');
|
||
|
||
// 4. 重新查询数据库
|
||
console.log('4. 重新查询数据库:');
|
||
const updatedUser = await User.findOne({ where: { username: 'admin' } });
|
||
if (updatedUser) {
|
||
console.log('查询到的密码哈希:', updatedUser.password);
|
||
console.log('查询到的哈希长度:', updatedUser.password.length);
|
||
console.log('哈希是否匹配:', updatedUser.password === newHash);
|
||
console.log('');
|
||
|
||
// 5. 测试查询到的哈希
|
||
console.log('5. 测试查询到的哈希:');
|
||
const queryTest = await bcrypt.compare(testPassword, updatedUser.password);
|
||
console.log('查询到的哈希验证结果:', queryTest);
|
||
console.log('');
|
||
|
||
// 6. 测试User模型的validPassword方法
|
||
console.log('6. 测试User模型的validPassword方法:');
|
||
const modelTest = await updatedUser.validPassword(testPassword);
|
||
console.log('模型验证结果:', modelTest);
|
||
console.log('');
|
||
|
||
if (queryTest && modelTest) {
|
||
console.log('🎉 数据库存储和验证都正常!');
|
||
} else if (queryTest && !modelTest) {
|
||
console.log('❌ 数据库存储正常,但User模型验证失败');
|
||
console.log('可能原因: User模型的validPassword方法有问题');
|
||
} else if (!queryTest && modelTest) {
|
||
console.log('❌ 数据库存储有问题,但User模型验证成功');
|
||
console.log('可能原因: 数据库存储时数据被截断或损坏');
|
||
} else {
|
||
console.log('❌ 数据库存储和User模型验证都失败');
|
||
console.log('可能原因: 数据库字段长度不够或编码问题');
|
||
}
|
||
} else {
|
||
console.log('❌ 重新查询用户失败');
|
||
}
|
||
|
||
} catch (error) {
|
||
console.error('测试失败:', error.message);
|
||
console.error('错误堆栈:', error.stack);
|
||
}
|
||
|
||
process.exit(0);
|
||
}
|
||
|
||
testDatabaseStorage();
|