[英]How can i redirect user to their specific page In node js
Basically I want to redirect user to their pages.基本上我想将用户重定向到他们的页面。
If it's a user, it should redirect to user's menu on the other hand, if it's an employee, it should redirect to employee's menu.如果是用户,它应该重定向到用户的菜单,如果是员工,它应该重定向到员工的菜单。
When I try to login, it shows logged in is true
but, it is still on login page and throws error as shown below -当我尝试登录时,它显示已登录,但它true
登录页面上并引发错误,如下所示 -
Customer and employee undefined Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Login.js登录.js
router.post("/login", function (req, res, next) {
passport.authenticate("local", function (err, user, info) {
if (err) {
return next(err);
}
if (!user) {
console.log("email password");
return res.redirect("/login");
}
req.logIn(user, function (err) {
if (err) {
return next(err);
}
req.session.isLoggedIn = true;
req.session.user = user;
req.session.save((err) => {
console.log(err);
if (req.isAuthenticated()) {
if (req.session.isLoggedIn === true) {
let customer = User.find(user.email);
let employee = Employee.find(user.email);
if (employee) {
res.render("employeeMenu");
}
if (customer) {
res.render("clientMenu");
}
}
return res.render("index");
}
console.log("user not exist");
return res.redirect("/login");
});
});
})(req, res, next);
});
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()) {
req.isLogged = true;
return next();
} else {
req.isLogged = false;
return next();
}
}
User Model用户 Model
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const userSchema = new Schema({
firstName:{
type:String,
required:true
},
lastName:{
type:String,
required:true
},
email:{
type:String,
required:true,
unique:true
},
password:{
type:String,
required:true,
}
})
Users = mongoose.model('User', userSchema)
module.exports = Users
Employee Model员工 Model
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const employeeSchema = new Schema({
First_name:{
type: String,
required:true
},
Last_name:{
type:String,
required:true
},
email:{
type:String,
required:true,
unique:true,
},
contactNo:{
type:Number,
required:true,
unique:true
},
password:{
type:String,
required:true,
},
joined:{
type:Date,
default:Date.now
}
})
Employee = mongoose.model('Employee', employeeSchema)
module.exports = Employee
You want to write middleware, not a route handler.您想编写中间件,而不是路由处理程序。 So,所以,
app.use(function(req, res, next) { if (req.session.user == null){ // if user is not logged-in redirect back to login page // res.redirect('/'); } else{ next(); } });
And also as the error suggest, you haven't created the customer and employee
fields or columns in your database schema.而且正如错误提示的那样,您还没有在数据库模式中创建customer and employee
字段或列。 Hence, create it.因此,创建它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.