我正在使用passportJS验证人员。我最近意识到的问题是用户可以注册多个帐户。我已经创建了一个中间件来检查电子邮件是否已经在使用,但不知何故它仍在通过测试。
router.post('/register',authMethods.isInUse ,multipart(),function(req, res) {
var image = fs.readFileSync(req.files.image.path);
var profilePic = {data : image, contentType : 'image/png'};
var user = new User({
username: req.body.username,
email: req.body.email,
password: req.body.password,
occupation: req.body.occupation,
phone: req.body.phone,
profilePic : profilePic,
firstName : req.body.firstName,
lastName : req.body.lastName
});
user.save(function(err) {
req.logIn(user, function(err) {
req.flash("success", "Welcome to the site " + user.username);
res.redirect('/flats');
});
});
});
在我的身份验证页面中,我调用路由中的中间件来满足条件。
return new Pair<>(yourList, yourCommaSeparatedValues);
我无法发现导致问题的错误方法。
答案 0 :(得分:2)
如果multipart()
执行我认为的操作(将请求数据解析为req.body
),那么req.body
可能不会填充在您的中间件中,因为它被调用之前多部分中间件。
尝试切换中间件功能:
router.post('/register', multipart(), authMethods.isInUse, function(req, res) {
...
});