【发布时间】:2016-03-21 20:26:22
【问题描述】:
目前,我正在使用基于 expressjs 的sails 框架,并使用passportjs(http://passportjs.org/) 进行yammer 身份验证。
在公司代理后面的服务器上部署我的节点应用程序时遇到问题。它无法连接到 yammer 进行 OAuth2 身份验证。
错误如下:
错误:获取访问令牌失败(错误:连接 ETIMEDOUT) 在 /root/rlps/node_modules/passport-yammer/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:125:38 在 /root/rlps/node_modules/passport-yammer/lib/passport-yammer/strategy.js:72:20 在客户端请求。 (/root/rlps/node_modules/passport-yammer/node_modules/passport-oauth/node_modules/oauth/lib/oauth2.js:129:5) 在 ClientRequest.EventEmitter.emit (events.js:95:17) 在 CleartextStream.socketErrorListener (http.js:1547:9) 在 CleartextStream.EventEmitter.emit (events.js:95:17) 在 Socket.onerror (tls.js:1437:17) 在 Socket.EventEmitter.emit (events.js:117:20) 在 net.js:441:14 在 process._tickDomainCallback (node.js:459:13)我相信这是因为代理挡住了路。我尝试在环境值中设置所有内容(如 http_proxy 和 https_proxy),但似乎代码不承认它们,需要在 passportjs 中的某个地方进行配置。
那么,在passportjs中设置代理设置或在nodejs中解决这个代理问题有什么好的方法吗?
【问题讨论】:
-
我们需要更多细节。你得到什么错误,它起源于哪里?能不能把相关代码隔离出来贴出来?这是安全 cookie 的问题吗?问题是否仅在服务器位于代理后面时显示?如果是这样,并且如果您使用的是 Express,请查看 Express docs 中的
trust proxy设置。 -
如果我可以继续假设您使用的是 Express,请查看 How to set secure cookie using heroku + node.js + express?
-
抱歉问题不清楚。我会添加更多细节。
-
已添加!如果还有什么不清楚的地方,请指出。
-
我现在通过查看 passport-yammer 库代码明白了。它不提供通过代理发送请求。希望有一种简单的方法可以为节点应用程序设置全局代理,而无需在 passport-yammer 库中进行修复。
标签: node.js express proxy sails.js passport.js