express - Express Passport 未设置和发送 Cookie
问题描述
index.js
const express = require('express')
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
const MongoStore = connectMongo(session);
const app = express()
const sessionStore = new MongoStore({
mongooseConnection: connection,
collection: 'sessions'
})
app.use(session({
secret: 'mysecret',
resave: false,
saveUninitialized: true,
store: sessionStore,
cookie: {
maxAge: (1000 * 60)*10
},
httpOnly: true,
secure: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser((user, done) => {
console.log(user._id: " + user._id);
done(null, user._id)
})
const GoogleStrategy = passportGoogle.OAuth2Strategy
const strategy = app => {
const strategyOptions = {
clientID: GOOGLE_ID,
clientSecret: GOOGLE_SECRET,
callbackURL: `/auth/google/callback`
}
const verifyCallback = async (accessToken, refreshToken, profile, done) => {
let [err, user] = await to(getUserByProviderId(profile.id))
if (err || user) {
return done(err, user)
}
const [createdError, createdUser] = await to(
createUser({
provider: profile.provider,
...
})
)
return done(createdError, createdUser)
}
passport.use(new GoogleStrategy(strategyOptions, verifyCallback))
app.get('/auth/google/callback',
passport.authenticate('google'),
(req, res) => {
res.cookie('???what is default key set by PassportJS???', req.user._id);
res.redirect(303, `/loggedByGoogle.html`);
}
I succesfully
- logged in with Google,
- passport.serializeUser was invoked
- profile data was saved in MongoDB,
- redirection happened to `/loggedByGoogle.html`
but no cookies were sent to client
and there is no entry in "sessions" data store after login.
我是否必须自己明确设置和发送 cookie?
只有在我添加 res.cookie('foo', 'bar'); 在 res.redirect(303, /loggedByGoogle.html
) 之前;我在客户端得到了一些cookie。
我虽然在“serializeUser”调用之后由 Passport 在内部设置了 cookie。Passport 是否设置了默认的 cookie 名称(密钥)?
我错过了什么?
解决方案
推荐阅读
- python - 将完整的循环输出转储到Python中的文本文件
- angular - 忽略来自 observable 的请求错误
- java - 将百分比值四舍五入到最接近的数字
- reactjs - 反应:你怎么能设置一个嵌套的孩子的状态
- reactjs - 如何防止 React Router 404 显示在所有页面上?
- javascript - 如何使用 react-gtm-module 初始化标签管理器?
- javascript - 如何根据D3中的自定义Y轴绘制堆积条形图
- php - simplexml_load_string 抛出数组到字符串的转换错误
- python - “if”命令只运行一次,不重复
- javascript - URL.createObjectURL 在某些组件中起作用,而在其他组件中不起作用 ReacrJS