Javascript 验证参数并重定向到已验证的参数?
我试图制作一个有不同用户的应用程序。用户可以登录、查看和操作相同的数据。我想,既然我可以列出用户对象并对其进行身份验证,为什么还要用相同的数据为每个用户创建一个完全不同的文档呢。我想设置类似于Javascript 验证参数并重定向到已验证的参数?,javascript,node.js,express,login,passport-local,Javascript,Node.js,Express,Login,Passport Local,我试图制作一个有不同用户的应用程序。用户可以登录、查看和操作相同的数据。我想,既然我可以列出用户对象并对其进行身份验证,为什么还要用相同的数据为每个用户创建一个完全不同的文档呢。我想设置类似于users/user1users/user2的路由。用户1不能直接转到url栏并将user1更改为user2我在尝试创建url时遇到问题,因此用户无法通过键入更改来访问url 因此,我有一个包含如下用户列表的文档: { list: 'userList', users: [ { password:
users/user1
users/user2
的路由。用户1不能直接转到url栏并将user1
更改为user2
我在尝试创建url时遇到问题,因此用户无法通过键入更改来访问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
上有一个表单,当他们提交表单时,我希望将用户重定向回users/:name
。我知道怎么做。但是我试图通过让用户只能够通过添加计数器查看他们的url来修复该部分,如果计数器小于1,则将名称设置为变量name
,这样name
就不能再分配了。因此,您只能对名称进行一次比较。一切都搞砸了
基本上,当用户提交表单时,我需要指向原始url(users/:name
)。用户不能在url栏中删除user1(:name)并键入user2。他必须自己登录
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")