node.js - Passportjs 未在会话中保存用户(仅在生产中)
问题描述
我正在尝试使用用户详细信息创建会话,所以当我这样做时,req.session.passport.user
我会获取用户信息
问题是ONLY IN PRODUCTION
,当会话与护照数据一起保存时,如下所示:
{"cookie":{"originalMaxAge":600000,"expires":"2021-06-04T16:36:36.571Z","httpOnly":true,"path":"/"},"passport":{"user":{"_id":"60ba144026959b0015808704","wishlist":[],"compare_list":[],"password":"$2a$10$rXZFdD0k2osgy.JUSTRDz.lSnBTBbr/v5uijUcafwNdAZnZ7jE/D6","email":"alcoholmart@gmail.com","first_name":"Jack","last_name":"Tan","__v":0,"isAuthenticated":true}}}
但是当我记录输出时,我得到了这个:
Session {
2021-06-04T16:26:37.422570+00:00 app[web.1]: cookie: {
2021-06-04T16:26:37.422571+00:00 app[web.1]: path: '/',
2021-06-04T16:26:37.422572+00:00 app[web.1]: _expires: 2021-06-04T16:36:37.158Z,
2021-06-04T16:26:37.422573+00:00 app[web.1]: originalMaxAge: 600000,
2021-06-04T16:26:37.422574+00:00 app[web.1]: httpOnly: true
2021-06-04T16:26:37.422574+00:00 app[web.1]: }
2021-06-04T16:26:37.422575+00:00 app[web.1]: }
顺便说一句,我使用 Heroku
这是我的主要代码:
app.use(
session({
resave: false,
saveUninitialized: false,
secret: process.env.MONGO_SECRET,
cookie: { maxAge: 600000 },
store: MongoStore.create({
mongoUrl: process.env.MONGO_URI,
}),
})
);
app.use(passport.initialize());
app.use(passport.session());
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cors());
我如何处理护照:
const passport = require("passport");
const User = require("../models/users");
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (email, done) {
User.findOne({ email }).exec((err, user) => {
done(err, user);
});
});
// Email authentication
const Signin = require("./signin");
const Signup = require("./signup");
const GoogleLogin = require("./google/signin");
const GoogleRegister = require("./google/signup");
passport.use("local-signin", Signin);
passport.use("local-signup", Signup);
passport.use("google-signin", GoogleLogin);
passport.use("google-signup", GoogleRegister);
module.exports = passport;
我尝试了我发现的一百万种不同的东西,但没有任何效果
同样,它只发生在生产中,如果这有帮助,那就是 Heroku,但也尝试过 Vercel
非常感谢,如果您需要任何其他帮助我,请告诉我!
解决方案
推荐阅读
- gitlab-ci-runner - 如何使用作业 API 检查跑步者当前是否正在运行作业
- python - 在这种情况下如何编写 __str__ func?
- java - 如何在循环结束后打印另一个术语?在java中
- openwhisk - Openwhisk 函数内存不足,不强制函数超时
- r - 将日期对象转换为 R 中的 unix 时间戳?
- javascript - 执行两点之间的路线时出现问题
- c# - ASP.NET Core 3.1 中的默认页面
- javascript - 更改 src 后如何使视频重新加载?
- typescript - 如何获取从类实例克隆的对象的类型?
- uwp - UWP:需要在文本框单击时禁用屏幕键盘