95 lines
3.4 KiB
JavaScript
95 lines
3.4 KiB
JavaScript
|
|
const { User } = require('./models');
|
||
|
|
const { sequelize } = require('./config/database');
|
||
|
|
const bcrypt = require('bcryptjs');
|
||
|
|
|
||
|
|
async function testActualData() {
|
||
|
|
try {
|
||
|
|
console.log('=== 测试实际数据库数据 ===\n');
|
||
|
|
|
||
|
|
// 1. 直接查询数据库
|
||
|
|
console.log('1. 直接查询数据库...');
|
||
|
|
const [results] = await sequelize.query(
|
||
|
|
'SELECT id, username, password, status FROM bank_users WHERE username = ?',
|
||
|
|
{
|
||
|
|
replacements: ['admin'],
|
||
|
|
type: sequelize.QueryTypes.SELECT
|
||
|
|
}
|
||
|
|
);
|
||
|
|
|
||
|
|
if (!results) {
|
||
|
|
console.log('❌ 数据库中未找到admin用户');
|
||
|
|
console.log('查询结果:', results);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
const dbUser = results;
|
||
|
|
console.log('数据库中的用户数据:');
|
||
|
|
console.log('查询结果:', results);
|
||
|
|
console.log('结果长度:', results.length);
|
||
|
|
if (dbUser) {
|
||
|
|
console.log('ID:', dbUser.id);
|
||
|
|
console.log('用户名:', dbUser.username);
|
||
|
|
console.log('状态:', dbUser.status);
|
||
|
|
console.log('密码哈希:', dbUser.password);
|
||
|
|
console.log('密码哈希长度:', dbUser.password ? dbUser.password.length : 0);
|
||
|
|
}
|
||
|
|
console.log('');
|
||
|
|
|
||
|
|
// 2. 使用Sequelize查询
|
||
|
|
console.log('2. 使用Sequelize查询...');
|
||
|
|
const sequelizeUser = await User.findOne({ where: { username: 'admin' } });
|
||
|
|
if (sequelizeUser) {
|
||
|
|
console.log('Sequelize查询到的用户数据:');
|
||
|
|
console.log('ID:', sequelizeUser.id);
|
||
|
|
console.log('用户名:', sequelizeUser.username);
|
||
|
|
console.log('状态:', sequelizeUser.status);
|
||
|
|
console.log('密码哈希:', sequelizeUser.password);
|
||
|
|
console.log('密码哈希长度:', sequelizeUser.password ? sequelizeUser.password.length : 0);
|
||
|
|
console.log('');
|
||
|
|
|
||
|
|
// 3. 比较两种查询结果
|
||
|
|
console.log('3. 比较两种查询结果:');
|
||
|
|
console.log('密码哈希是否相同:', dbUser.password === sequelizeUser.password);
|
||
|
|
console.log('');
|
||
|
|
|
||
|
|
// 4. 测试密码验证
|
||
|
|
const testPassword = 'Admin123456';
|
||
|
|
console.log('4. 测试密码验证:');
|
||
|
|
console.log('测试密码:', testPassword);
|
||
|
|
|
||
|
|
// 使用数据库查询的密码哈希
|
||
|
|
const dbTest = await bcrypt.compare(testPassword, dbUser.password);
|
||
|
|
console.log('数据库密码验证结果:', dbTest);
|
||
|
|
|
||
|
|
// 使用Sequelize查询的密码哈希
|
||
|
|
const sequelizeTest = await bcrypt.compare(testPassword, sequelizeUser.password);
|
||
|
|
console.log('Sequelize密码验证结果:', sequelizeTest);
|
||
|
|
|
||
|
|
// 使用User模型的validPassword方法
|
||
|
|
const modelTest = await sequelizeUser.validPassword(testPassword);
|
||
|
|
console.log('User模型验证结果:', modelTest);
|
||
|
|
console.log('');
|
||
|
|
|
||
|
|
if (dbTest && sequelizeTest && modelTest) {
|
||
|
|
console.log('🎉 所有验证都成功!');
|
||
|
|
} else {
|
||
|
|
console.log('❌ 验证失败');
|
||
|
|
console.log('可能原因:');
|
||
|
|
if (!dbTest) console.log('- 数据库中的密码哈希有问题');
|
||
|
|
if (!sequelizeTest) console.log('- Sequelize查询的密码哈希有问题');
|
||
|
|
if (!modelTest) console.log('- User模型的validPassword方法有问题');
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
console.log('❌ Sequelize查询失败');
|
||
|
|
}
|
||
|
|
|
||
|
|
} catch (error) {
|
||
|
|
console.error('测试失败:', error.message);
|
||
|
|
console.error('错误堆栈:', error.stack);
|
||
|
|
}
|
||
|
|
|
||
|
|
process.exit(0);
|
||
|
|
}
|
||
|
|
|
||
|
|
testActualData();
|