cuốn sách gpt4 ai đã làm

android — Lỗi yêu cầu thông số dữ liệu và muối (Ủy quyền)

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 22:19:41 29 4
mua khóa gpt4 Nike

Tôi là người mới bắt đầu sử dụng NodeJS và tôi đang cố gắng tạo một biểu mẫu xác thực bằng NodeJS + Express. Tôi muốn xác minh mật khẩu của mình (khi "xác nhận mật khẩu" khác với "mật khẩu", nó sẽ không trả về gì cả. Thật không may, tôi liên tục nhận được "thông số dữ liệu và muối được yêu cầu". Tôi đã thử hỏi theo nhiều cách khác nhau Một số điều kiện nhưng tôi vẫn giữ gặp lỗi này. Bạn có ý tưởng nào để làm cho nó hoạt động không? Đây là tệp user.js:

const pool = require('./pool');
const bcrypt = require('bcrypt');


hàm Người dùng() {};

Người dùng.prototype = {

tìm: hàm (người dùng = null, gọi lại)
{
nếu (người dùng) {
var field = Number.isInteger(user) ? 'id' : 'username';
}
let sql = `CHỌN * TỪ người dùng Ở ĐÂU ${field} = ?`;

pool.query(sql, user, function(err, result) {
nếu (lỗi)
ném lỗi
if(result.length) {
gọi lại (kết quả [0]);
}else {
gọi lại (null);
}
});
},

tạo: hàm (nội dung, gọi lại)
{
var pwd = body.password;
var cpwd = body.confirmpassword;

// ở đây tôi băm pass
body.password = bcrypt.hashSync(pwd,10);
body.confirmpassword = bcrypt.hashSync(cpwd, 10);

if (body.password != body.confirmpassword){
gọi lại (null);
}
khác {

var liên kết = [];

for(chống đỡ trong cơ thể){
bind.push(body[prop]);
}

let sql = `CHÈN VÀO người dùng (tên người dùng, tên đầy đủ, mật khẩu) GIÁ TRỊ (?, ?, ?)`;

pool.query(sql, bind, function(err, result) {
if(err) ném lỗi;
gọi lại (result.insertId);
});
}
},

đăng nhập: chức năng (tên người dùng, mật khẩu, gọi lại)
{
this.find(tên người dùng, hàm(người dùng) {
nếu (người dùng) {
if(bcrypt.compareSync(password, user.password)) {
gọi lại (người dùng);
return;
}
}
gọi lại (null);
});
}

}
module.exports = Người dùng;

Tệp pages.js:

const express = require('express');
const Người dùng = require('../core/user');
const bộ định tuyến = express.Router();

const user = Người dùng mới();

router.get('/', (req, res, next) => {
hãy để người dùng = req.session.user;
nếu (người dùng) {
res.redirect('/home');
return;
}
res.render('index', {title:"Ứng dụng của tôi"});
})

router.get('/home', (req, res, next) => {
hãy để người dùng = req.session.user;
nếu (người dùng) {
res.render('home', {opp:req.session.opp, name:user.fullname});
return;
}
res.redirect('/');
});


router.post('/login', (req, res, next) => {
user.login(req.body.username, req.body.password, function(result) {
nếu (kết quả) {
req.session.user = kết quả;
req.session.opp = 1;
res.redirect('/home');
}else {
res.send('Tên người dùng/Mật khẩu không chính xác!');
}
})

});

router.post('/register', (req, res, next) => {
hãy để userInput = {
tên người dùng: req.body.username,
tên đầy đủ: req.body.fullname,
mật khẩu: req.body.password
};

user.create(userInput, function(lastId) {
if(lastId) {
user.find(lastId, function(result) {
req.session.user = kết quả;
req.session.opp = 1;
res.redirect('/home');
});
}else {
console.log('Lỗi tạo người dùng mới ...');
}
});
});

router.get('/logout', (req, res, next) => {
if(req.session.user) {
req.session.destroy(function() {
res.redirect('/');
});
}
});
module.exports = bộ định tuyến;

câu trả lời hay nhất

Trong userInput bạn không vượt qua xác nhận mật khẩu tài sản.

hãy để userInput = {
tên người dùng: req.body.username,
tên đầy đủ: req.body.fullname,
mật khẩu: req.body.password
};

Trong phương thức tạo, bạn đang truy cập nó.var cpwd = body.confirmpassword;

cpwd là null, đó là lý do gây ra lỗi.

   body.confirmpassword = bcrypt.hashSync(cpwd, 10);//**cpwd là null**

Theo tài liệu, dữ liệu là tham số bắt buộc và không được để trống.

hashSync(dữ liệu, muối)

data - [bắt buộc] - Dữ liệu cần mã hóa.

salt - [bắt buộc] - Muối dùng để băm mật khẩu.

Về lỗi yêu cầu tham số javascript - dữ liệu và muối (Ủy quyền), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/59670857/

29 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress