你好,我跟随课程节点的反应完整的网络栈,我有一个大的问题,我不知道它为什么会出现,或从什么是显示。我的终端显示了这个错误:
req.session.regenerate(function(err) {
^ TypeError: req.session.regenerate is not a function
我的代码看起来很像
index.js
const express = require("express");
const mongoose = require("mongoose");
const cookieSession = require("cookie-session");
const passport = require("passport");
const keys = require("./config/keys");
require("./models/User");
require("./services/passport");
mongoose.connect(keys.connect_url);
const app = express();
app.use( cookieSession({
maxAge: 30 * 24 * 60 * 60 * 1000,
keys: [keys.cookieKey], }) );
app.use(passport.initialize());
app.use(passport.session());
require("./routes/authRoutes")(app);
const PORT = process.env.PORT || 5000;
app.listen(PORT);
passport.js
const passport = require("passport");
const GoogleStrategy = require("passport-google-oauth20").Strategy;
const mongoose = require("mongoose");
const keys = require("../config/keys");
const User = mongoose.model("users");
passport.serializeUser((user, done) => { done(null, user.id); });
passport.deserializeUser((id, done) => {
User.findById(id).then((user) => {
done(null, user); }); });
passport.use(new GoogleStrategy(
{
clientID: keys.googleClientId,
clientSecret: keys.googleClientSecret,
callbackURL: "/auth/google/callback",
},
(accessToken, refreshToken, profile, done) => {
User.findOne({ googleId: profile.id }).then((existingUser) => {
if (existingUser) {
// we already have a record with the given profile ID
done(null, existingUser);
} else {
// we don't have a user record with this ID, make a new record!
new User({ googleId: profile.id })
.save()
.then((user) => done(null, user));
}
});
} ) );
authRouters.js
const passport = require("passport");
module.exports = (app) => {
app.get(
"/auth/google",
passport.authenticate("google", {
scope: ["profile", "email"],
})
);
app.get("/auth/google/callback", passport.authenticate("google"));
app.get("/api/current_user", (req, res) => {
res.send(req.user);
});
};
我真的不知道这是怎么回事,我可以说那是我去localhost:5000/auth/google
的时候出现的
发布于 2022-06-06 14:15:17
我在做同样的课程,修正了udemy的问题。来自乌德米:
护照v.0.6.0目前因不兼容而损坏:https://github.com/jaredhanson/passport/issues/907
维护人员建议使用最新的0.5.0版本,直到一个修复程序被推开。使用:
npm卸载护照
npm安装护照@0.5
这对我来说很好。
发布于 2022-05-25 18:02:22
发布于 2022-05-30 15:05:16
我也没多久就面临这个问题.好像是饼干会话包的问题.为了解决这个问题,我使用了快速会话。
// install the package
npm install express-session
const session = require('express-session')
app.use(session({
secret: 'somethingsecretgoeshere',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));
https://stackoverflow.com/questions/72375564
复制相似问题