我正在嘗試保存用戶並同時註冊它。我有麻煩同時做兩個。
我目前的架構:創建用戶並使用passport.js進行身份驗證
const userSchema = new mongoose.Schema({
username: String,
password: String,
firstName: String,
lastName: String,
player: {
type: Boolean,
default: true
}
});
userSchema.plugin(passportLocalMongoose);
module.exports = (User, "userSchema");
我目前的形式:
<form action="/player" method="POST">
<input type="text" name="user[username]" placeholder="username">
<input type="password" name ="user[password]" placeholder="password">
<input type="text" name="user[firstName]" placeholder="First Name">
<input type="text" name="user[lastName]" placeholder="Last Name">
<button>Submit</button>
</form>
我需要快遞,護照,護照的地方,護照本地貓鼬,身體的解析器,貓鼬,和我模式。
我之後app.js是:
mongoose.connect(database);
app.use(bodyParser.urlencoded({extended: true}));
app.use(require("express-session")({
secret: "Generic Secret Password",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serialUser());
passport.deserializeUser(User.deserializeUser());
//route
app.post("/player", function(req, res){
var newUser = new User({ username: req.body.user.email });
User.register(newUser, req.body.user.password, function(err, user){
if(err){
console.log(err);
return res.render("new");
}
passport.authenticate("local")(req, res, function(){
res.redirect("/player");
});
});
我遇到的問題是,當我提交,用戶保存的鹽,哈希,用戶名,並設置播放器爲「true」,但它不會保存lastName或firstName,並且會出現錯誤的請求(400)。我可以做一個User.Create並保存所有內容(減去散列和鹽)並重定向。我也可以將表單設置爲「user [username]」和「user [password]」爲「username」和「password」,並保存除firstName和lastName以外的所有內容,並且它將在沒有400狀態的情況下正確重定向。我曾嘗試更改「usernameField」和「passwordField」的默認輸入,但我沒有運氣。我試圖看看各種SO帖子,最近我發現是一個類似的建議,以改變默認值,所以也許我做錯了。我也嘗試重定向到不同的路線,但仍然沒有運氣。
這是我工作過的第一個不是代碼的項目,我試圖儘可能具體地描述所有事情,並且一直在努力工作八個小時。謝謝你的幫助!
好的幫助。謝謝。 –