Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PassportJs不保存会话_Javascript_Node.js_Express_Mongoose_Passport.js - Fatal编程技术网

Javascript PassportJs不保存会话

Javascript PassportJs不保存会话,javascript,node.js,express,mongoose,passport.js,Javascript,Node.js,Express,Mongoose,Passport.js,我将react和nodejs与passportjs一起使用。我调用了一个post请求,使用本地策略验证用户名和密码。在同一个页面上,我有一个按钮,它调用get请求,只调用console.log(req.user) 问题是:在route/login-post上,我能够控制台.log(req.user),而当我点击一个按钮向/getstatus发出get请求时,它会给我未定义的消息 如果您检查/login post路由,res.send(req.user)也会发送未定义的消息,而console.lo

我将react和nodejs与passportjs一起使用。我调用了一个post请求,使用本地策略验证用户名和密码。在同一个页面上,我有一个按钮,它调用get请求,只调用console.log(req.user)

问题是:在route/login-post上,我能够控制台.log(req.user),而当我点击一个按钮向/getstatus发出get请求时,它会给我未定义的消息

如果您检查/login post路由,res.send(req.user)也会发送未定义的消息,而console.log(req.user)会在控制台中显示正确的信息

我需要帮助,不知道我做错了什么

下面是我的代码:

const express = require("express");
const bodyParser = require("body-parser");
require("dotenv").config();
const mongoose = require("mongoose");

const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");
const cookieParser = require("cookie-parser");
const expressSession = require("express-session");
const cors = require("cors");
const session = require("cookie-session");
const LocalStrategy = require("passport-local").Strategy;

//............................Initialization of middleware..........................

const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cors());

app.use(cookieParser());

app.use(passport.initialize());
app.use(passport.session());

//..............connect to a database...............................

const Users = new mongoose.Schema({
  username: String,
  password: String,
});
Users.plugin(passportLocalMongoose);
const MyModel = mongoose.model("MyModel", Users);

passport.use(MyModel.createStrategy());
// passport.use(new LocalStrategy(MyModel.authenticate()));

passport.serializeUser(MyModel.serializeUser());
passport.deserializeUser(MyModel.deserializeUser());

 

mongoose.connect(
  process.env.DB_HOST,
  {
    useNewUrlParser: true,
    useUnifiedTopology: true,
  },
  () => {
    console.log("Database Connected");
  }
);
// };

//......................Routes........................

app.post(
  "/login",
  cors(),
  passport.authenticate("local", {
    failureRedirect: "/failure",
  }),
  function (req, res, next) {
    res.send(req.user);
    console.log(req.user);
  }
);

 

app.get("/failure", (req, res) => {
  res.send({
    name: "fff",
    age: 23,
    status: 500,
    msg: "Invalid Username or Password",
    color: "danger",
  });
});
 

app.post("/reg", cors(), (req, res) => {
  let username = req.body.username;
  let password = req.body.password;
  //   connectdb();
  MyModel.register({ username: username, active: false }, password, function (
    err,
    user
  ) {
    if (err) {
      console.log(err);
    } else {
      res.send("Success");
    }
  });
});

app.get("/getstatus", (req, res) => {
  console.log(req.user);

   
});

//...........Start Server..........................

app.listen(5000, () => {
  console.log("Server Started on Port 5000");
});


我找到了解决方案,问题不在于passportJS。这是与Axios

需要这行代码:

Axios.defaults.withCredentials = true;