生产环境会话对象中不存在 Passport 对象
Posted
技术标签:
【中文标题】生产环境会话对象中不存在 Passport 对象【英文标题】:Passport object does not exist in session object in production environment 【发布时间】:2018-02-02 18:41:45 【问题描述】:护照对象在我的会话对象上不存在。它在我的本地环境中按预期工作,但是当我在 aws 上移动到我的生产服务器时,没有护照对象。会话已成功存储在我的 dynamoDB 存储中,但未显示在请求中。
这是我对 req.session 对象的期望(以及我在本地环境中得到的):
session:
Session
cookie:
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true ,
passport: user: [Object] <------- This Object
这是我在生产中得到的:
session:
Session
cookie:
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: false
---------No sign of the passport object---------
服务器设置:
// DynamoDBStore Configuration
const options =
table: 'capture-sessions',
AWSConfigJSON:
accessKeyId: awsConfig.accessKeyId,
secretAccessKey: awsConfig.secretAccessKey,
region: 'us-east-2'
;
app.use(cors());
app.use(expressSession(
store: new DynamoDBStore(options),
secret: 'keyboard cat',
saveUninitialized: false,
resave: false,
cookie:
secure: false,
path: '/',
httpOnly: true
));
app.use(passport.initialize());
app.use(passport.session());
require('./passport/init')(passport);
【问题讨论】:
您在 AWS 中的部署模型是什么? 只是一个基本的 EC2 实例 【参考方案1】:如果您正在访问远程/生产站点并且它使用https
,您需要有secure :true
。现在我在你的代码中看到它说安全是错误的。你可以使用这样的东西。
cookie:
secure : process.env.NODE_ENV === "production" ? true : false
【讨论】:
以上是关于生产环境会话对象中不存在 Passport 对象的主要内容,如果未能解决你的问题,请参考以下文章