pig*_*ack 21 javascript node.js passport.js
就在昨天在Heroku上我开始在twitter上登录快递时出现此错误
Error: failed to find request token in session
at Strategy.<anonymous> (/app/node_modules/passport-twitter/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:120:54)
at Strategy.authenticate (/app/node_modules/passport-twitter/lib/passport-twitter/strategy.js:82:40)
at Passport.authenticate (/app/node_modules/passport/lib/passport/middleware/authenticate.js:153:14)
at callbacks (/app/node_modules/express/lib/router/index.js:272:11)
at param (/app/node_modules/express/lib/router/index.js:246:11)
at pass (/app/node_modules/express/lib/router/index.js:253:5)
at Router._dispatch (/app/node_modules/express/lib/router/index.js:280:4)
at Object.handle (/app/node_modules/express/lib/router/index.js:45:10)
at Context.next (/app/node_modules/express/node_modules/connect/lib/http.js:204:15)
at Context.<anonymous> (/app/node_modules/passport/lib/passport/context/http/actions.js:64:8)
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
pig*_*ack 21
YUHU我解决了.问题是,有时我的网站有www,有时没有,所以会话有问题,显然.
Gab*_*ner 12
我也使用Node.js,Express和Passport遇到了这个错误,虽然我的修复程序与上面描述的不同.
我从'express-session'文档中复制并粘贴了以下代码......
app.use(session({ secret: 'keyboard cat', key: 'sid', cookie: { secure: true }}))
Run Code Online (Sandbox Code Playgroud)
那个安全:真位指示快递会话使用'https',我在开发环境中没有设置.一旦我删除它,错误就消失了.
这是一个很晚的答案,但我只是想出了另一个可能发生这种情况的原因。当制作express-session 的人说 MemoryStore 不适用于生产时,他们是认真的。
如果您使用集群(pm2 或永远或在 Heroku 上运行),那么基于内存的 cookie 存储有其自身的一系列问题。您经常会丢失 cookie 或损坏它们(因为服务器端有两个或多个单独的进程,不共享公共内存)。
如果你想用集群运行你的 Node 应用程序,你需要使用 Redis 或一些数据库支持的 cookie 存储
| 归档时间: |
|
| 查看次数: |
12170 次 |
| 最近记录: |