Tay*_*Mac 2 node.js passport.js
我相信我已经正确配置了一切:
app.configure(function() {
app.use(express.cookieParser('secret message')); // secret it set here in new version of express or connect
app.use(express.bodyParser());
app.use(express.session());
app.use(passport.initialize());
app.use(passport.session());
});
Run Code Online (Sandbox Code Playgroud)
当使用正确的凭据请求"登录" 时:
app.post('/api/login', passport.authenticate('local'), function (req, res, next) {
console.log(req.session.passport); // {"user":"5259f2739d4323000a000003"}
});
Run Code Online (Sandbox Code Playgroud)
req.session.passport 填充:
"passport": {"user":"5259f2739d4323000a000003"}
Run Code Online (Sandbox Code Playgroud)
但是,当打电话给:
app.post('/api/checklogin', function (req, res, next) {
console.log(req.session.passport); // {}
})
Run Code Online (Sandbox Code Playgroud)
req.session.passport 丢了:
"passport":{}
Run Code Online (Sandbox Code Playgroud)
两次,req.session看起来像这样:
{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"passport":{}}
Run Code Online (Sandbox Code Playgroud)
**如上所述,护照对象明显不同
我假设我已serializeUser正确配置,因为它正确设置了此属性.
我不完全确定Passport如何创建会话cookie,以及这些cookie如何持久化.
我假设req.session.passport应该保留用户属性,但看起来Passport对象:
我担心我可能会忽视一些大事 - 可能是我可能需要做的事情,Passport不能直接为我处理.
我不知道有任何方法可以测试会话是否由Passport创建.
任何建议或帮助都非常感谢.这是一个多天的斗争.
您使用的是群集设置吗?如果是这样,您需要停止使用默认值MemoryStore,并切换到connect-redis之类的内容,以便应用程序的不同实例可以访问共享会话数据.
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |