validation参数并redirect到已validation的参数?

我试图做一个有不同用户的应用程序。 用户可以login并查看和操作相同的数据。 我想为什么用相同的数据为每个用户创build一个完全不同的文档,只需要创build一个用户对象列表并对其进行身份validation即可。 我想要设置类似users/user1 users/user2路由。 用户1不能只是去url栏,并将用户1更改为user1我遇到了问题,使用户无法通过只改变它通过键入访问该url。

所以我有一个像这样的用户列表的文档:

 { list: 'userList', users: [ { password: 'pass1', username: 'user1' }, { username: 'user2', password: 'pass2' }, { username: 'user3', password: 'pass3' } ], address: '14453 ny 14456', desc: '3 floors', __v: 0, _id: 56baf181356641f01213295a } 

我有这样的护照

 passport.use("local", new LocalStrategy( function(username, password, done){ User.findOne({ "users": { $elemMatch :{username : username}} }, function(err, user){ // console.log("user " + user) if(err){return done(err);} if(!user){ console.log("no user") return done(null, false,{message : "Incorrect username."}); } if(!user.validPassword( username, password)){ return done(null, false,{message : "Incorrect password."}); } return done(null, user) }) })) 

这是我觉得我真的很愚蠢的部分。 在users/:name有一个表单,当他们提交表单时我希望用户被redirect回到users/:name 。 我明白如何做到这一点。 但我试图通过让用户只能通过添加一个计数器来查看他们的url,如果该计数器小于1将名称设置为variablesname所以name不能被分配了。 所以你只能比较一次这个名字。 这一切都搞砸了。

基本上我需要被定向到用户提交表单时的原始url( users/:name )。 用户不能删除url栏中的user1(:name)并inputuser2。 他必须自己login

 app.post("/login", function(req, res, next){ console.log("posted") passport.authenticate("local",{ successRedirect : "/users/" + req.body.username, failureRedirect : "/login", failureFlash : true })(req, res, next) } ) var counter = 0 app.get("/users/:name", ensureAuthenticated, function(req, res){ // console.log(req.params.name) counter++; if(counter <= 1){ var name = req.params.name } User.findOne({"users" : { $elemMatch: { username : name}}}, function(err, doc){ if(!doc){ res.redirect("../login") counter = 0; } else{ console.log("test ", doc); var users = doc.users; var currentUser = {}; for(var i = 0; i < users.length; i++){ if(users[i].username === name){ currentUser = users[i]; } } console.log("currentUser ", currentUser) if(currentUser.username === name ){ res.render("users", {result : doc, user : currentUser.username}); } } }) }) app.post("/users", function(req, res){ // console.log(req.protocol + "://" + req.get("host") + req.originalUrl ) // console.log(req.body.subject, " " , req.protocol , " ", req.get("host") , " " , req.originalUrl) res.redirect("back") // res.redirect(req.protocol + "://" + req.get("host") + req.originalUrl + req.params.name) }) 

玉:

 html head body p Welcome #{user} p= result.address h3= result.desc a(href="/logout") logout form(action = "/users" method = "POST") label delete: input(type = "text" name="subject") input(type="submit" value = "delete")