Javascript PassportJs不保存会话
我将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)会在控制台中显示正确的信息 我需要帮助,不知道我做错了什么 下面是我的代码: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
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;