【发布时间】:2018-06-07 05:04:12
【问题描述】:
我正在尝试让用户能够注册我的网站,并将凭据存储在 mongodb 上。
这是我的 auth.js 文件,其中定义了路由:
router.post('/signup', (req,res,next) => {
Passport.authenticate('local-signup', err => {
if (err) {
if (err.name === "MongoError" && err.code === 11000) {
res.status(409).json({
success: false,
message: "Unsuccessful",
errors: {
email: "This email is already taken."
}
});
}
res.status(400).json({
success: false,
message: "Unsuccessful",
errors: {
unknown: "Could not process for some reason. Contact admin."
}
});
}
res.status(200).json({
success: true,
message: "Successful",
errors: {}
});
}) (res, req, next);
}
最后一个括号有点乱,但相信我,这不是语法错误。 这个 sn-p 是我定义护照策略的地方:
require ('../Models/Users')
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/onlinestore');
const User = mongoose.model('User');
const PassportLocalStrategy = require('passport-local').Strategy;
const Passport = require('passport');
module.exports = Passport.use(new PassportLocalStrategy({
usernameField: 'email',
passwordField: 'password',
session: false,
passReqToCallback: true,
}, (email, password, done) => {
let user = new User();
user.email = email.trim();
user.password = password.trim();
user.save(err => {
if (err) {
console.log(err);
return done(err);
} else {
console.log("Success");
return done(null);
}
});
}
));
路由能够获取用户输入的密码和用户。当我点击提交时,实际上什么都没有发生;服务器不控制台,客户端也不控制台。经过一些调试后,我认为问题是由于 Passport.Authenticate 没有被调用,但我不知道为什么。如有需要,我可以发布其他代码 sn-ps,谢谢!
【问题讨论】:
标签: javascript mongodb express passport.js