我有以下代码检查数据库中是否存在用户......
router.post('/', function (req, res) {
User.findOne({
username: req.body.log_username,
password: req.body.log_password
}, function (err, docs) {
if (docs.length !== 0) {
console.log("user exists");
}
else {
console.log("no exist");
}
});
});
如果登录成功,我有一个主页要发送给用户。我应该在if
语句中放置什么来将用途发送到另一个页面,在本例中为home.js
。 home.js
中包含以下代码......
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
res.render('home', { title: 'Express' });
});
module.exports = router;
答案 0 :(得分:4)
您需要将用户重定向到主页面。的 res.redirect('path')
强>
参考:http://expressjs.com/en/4x/api.html#res.redirect
router.post('/', function (req, res) {
User.findOne({
username: req.body.log_username,
password: req.body.log_password
}, function (err, docs) {
if (docs.length !== 0) {
console.log("user exists");
res.redirect('/'); // main page url
}
else {
console.log("no exist");
res.redirect('/login');
}
});
});
答案 1 :(得分:1)
Mongoose findOne会将1个对象作为result
其他null
返回。
无需检查docs.length > 0
手册:http://mongoosejs.com/docs/api.html#query_Query-findOne)
还添加了req.session.user = result
也许您需要它来检查用户是否经过身份验证(在中间件功能中,以防止直接访问内部路由。
router.post('/', function (req, res) {
User
.findOne({
username: req.body.log_username,
password: req.body.log_password
})
.exec(function (err, result) {
if(result) { // auth was successful
req.session.user = result; // so writing user document to session
return res.redirect('/'); // redirecting user to interface
}
// auth not successful, because result is null
res.redirect('/login'); // redirect to login page
});
});
答案 2 :(得分:1)
在中间件中的某处将originalUrl存储到会话:
req.session.returnTo = req.originalUrl;
然后将successRedirect
更改为successReturnToOrRedirect
参数:
app.post('/login', passport.authenticate('local-login', {
successReturnToOrRedirect: '/dashboard', // redirect to the secure profile section
failureRedirect: '/login?Failed', // redirect back to the signup page if there is an error
failureFlash: true // allow flash messages
}));
答案 3 :(得分:0)
你想要像
这样的东西 res.redirect('/');
在你的POST中" /"。
示例:
if (docs.length !== 0) {
console.log("user exists");
res.redirect('/');
}