Ну, мой код слишком длинный, чтобы публиковать бит. Я создал экспресс-узел mongodb с React на переднем крае, я построил реагировать и скопировал файл на компьютер, а затем передал его на экспресс-сервер, скопировал бэкэнд-файлы, а также скопировал их на другой компьютер. Я запустил сервер, на котором размещено приложение, построенное по реакции, и другое экспресс-приложение, конечно же, в разных портах, операторы if else дали 32-битный компьютер с разными результатами, так что bcrypt экспресс-зависимость при аутентификации , кто-нибудь имел эту проблему? (та же версия узла на обоих)
router.post('/login', async (req, res ) => {
const salt = await bcrypt.genSalt(10)
const passhash = await bcrypt.hash(config.get('Rootpassword'), salt)
const rootuser = {
name: "Root",
password: passhash ,
isMaster: true,
isRoot: true
}
const rootpass = await bcrypt.compare(req.body.Password, rootuser.password)
if ( req.body.Username == rootuser.name && (rootpass)) {
const token = await jwt.sign(rootuser, config.get('jwtPrivateKey'))
res.header('authtoken', token).send(rootuser.name)
}
else {
let admin = await Admin.findOne({ name: req.body.Username})
if (!admin) return res.status(403).send('Invalid username')
console.log(admin)
const validpass = await bcrypt.compare(req.body.Password, admin.password)
if(!validpass) return res.status(403).send('Invalid password')
const token = admin.generateToken();
res.header('authtoken', token).send(_.pick(admin, ["name", "_id"]));
console.log(token)
}
})
в 32-битной версии узла, на котором я запускал локальный сервер, bcrypt.compare всегда возвращает false, даже если req.body.password = = rootuser.password и req.body.username == req.body.Username. это прекрасно работает в файле node.js на моем локальном сервере, пожалуйста, нужна помощь, также некоторые данные в 32-битной версии
поступают неполными в других формах