簡體   English   中英

如何在節點 js 中將用戶重定向到他們的特定頁面

[英]How can i redirect user to their specific page In node js

基本上我想將用戶重定向到他們的頁面。

如果是用戶,它應該重定向到用戶的菜單,如果是員工,它應該重定向到員工的菜單。

當我嘗試登錄時,它顯示已登錄,但它true登錄頁面上並引發錯誤,如下所示 -

 Customer and employee undefined Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

登錄.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();
  }
}

用戶 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

員工 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

您想編寫中間件,而不是路由處理程序。 所以,

 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(); } });

而且正如錯誤提示的那樣,您還沒有在數據庫模式中創建customer and employee字段或列 因此,創建它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM