2015-06-16 54 views
0

我几乎是web开发人员的初学者。我正在为登录验证制作一个非常基本的网页。我所要做的只是从数据库(mongoose)检查我的LoginPage上的用户凭据(用户名&密码),并在他们正确的情况下重定向到下一页(MainPage)。在Node.js和MongoDB中登录表单(mongoose)

Login.ejs档案(.html)文件

<html>  
    <head> 
     <title>Login</title> 
    </head>  
    <body>  
     <form id="form_Login" action="/MainPage" method="post"> 
      <input id="txt_username" type="text" required> 
      <br><input id="txt_password" type="password" required>    
      <br><input type="submit" value="Login"> 
     </form>  
    </body>  
</html> 

app.js文件

var express = require('express'); 
var app = express();  
var mongoose = require('mongoose'); 
var Schema = mongoose.Schema;  
var User = new Schema ({ 
    username : String, 
    password : String 
}); 

mongoose.model('User',User); 
mongoose.connect('mongodb://localhost:27017/MyDB'); 

app.set('view engine', 'ejs'); 

app.get('/',function(req, res) { 
    res.render('LoginPage'); 
}); 

app.get('/MainPage',function(req, res) { 
    res.render('MainPage'); 
}); 

app.post('/MainPage', function(req, res) { 
    // new code should come over here 
    res.redirect('/MainPage'); 
}); 

app.get('*', function(req, res) { 
    res.send('Bad Route!'); 
}); 

var server = app.listen(3000, function() { 
    console.log('listening on port 3000.'); 
}); 

任何帮助,将不胜感激。

+0

这有助于显示您正在获取的任何错误,或描述代码演示的不良行为,以便其他人可以尝试协助解决具体问题而不仅仅是一般性任务。 –

+0

先生我在第二个文件中提到了一个评论,其中需要从db进行代码验证的逻辑。 –

回答

1

我建议你使用passport.js库。 它不仅为您提供创建本地身份验证的好方法,还可以稍后集成Google,Facebook和Twitter(或任何oAuth)社交身份验证方法。

您可以阅读应该为你提供一个良好的起点的文档,或这些例子中的任何一个:

我建议你首先使用护照本地计划,它会给你你需要的东西。 https://github.com/jaredhanson/passport-local

+0

是的,我知道。但我希望先尝试一下,然后继续前进。 –

+0

@ user_47它设置起来非常简单,而且它更安全,否则你将不得不将密码保存为不加密(根本不安全),而且必须创建数据库模型来保存和加载用户,发明轮子?只是做一个文本比较是不安全的。 –

+0

感谢这些有用的链接,多瑞。这里的主要问题是MongoDB查询。我对一行代码感兴趣,它将实际上将我的文本框的值与数据库中的值进行比较。之后我会继续实施Passport.js。 –

0

使用body-parser中间件来获取表单数据并使用它来查询数据库。首先你需要做一个npm install body-parser。然后你可以尝试下面的内容。请注意,这是非常粗略的代码,您应该使用其他一些优秀的库来处理认证。

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser); 

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var User = new Schema ({ 
    username : String, 
    password : String 
}); 

mongoose.model('User',User); 
mongoose.connect('mongodb://localhost:27017/MyDB'); 

app.use(bodyParser.urlencoded({ extended: true })); 

app.set('view engine', 'ejs'); 

app.get('/',function(req,res) 
{ 
    res.render('LoginPage'); 
}); 

app.get('/MainPage',function(req,res) 
{ 
    res.render('MainPage'); 
}); 

app.post('/MainPage', function(req, res) 
{ 
    // new code should come over here 
    User.findOne({username: req.body.username, password: req.body.password}, function(err, user){ 
     if(err) { 
      console.log(err); 
     } 
     else if(user){ 
      res.redirect('/MainPage'); 
     } 
     else { 
      console.log('Invalid'); 
     } 
    }); 

}); 

app.get('*', function(req,res) 
{ 
    res.send('Bad Route!'); 
}); 

var server = app.listen(3000, function() { 
    console.log('listening on port 3000.'); 
}); 
+0

继续收到此错误:“TypeError:undefined不是函数” –

+0

您会在哪一行发生该错误? –

+0

user.findOne()...评论之后的一个。 –

相关问题