Предыстория: я использую nginx в качестве обратного прокси-сервера для своего экспресс-сервера для обработки SSL. Я использую пакет Everyauth для работы с Facebook oauth. Redis используется для хранения сеансов.
Проблема: при первом запросе аутентификации время ожидания каждой аутентификации истекает на шаге getAccessToken
аутентификации. При втором запросе аутентификации он завершит все шаги аутентификации и вернется.
В частности: я проследил за выполнением до того момента, когда каждая авторизация использует пакет request на этапе getAccessToken. Request использует модуль https для выполнения запроса, который никогда не возвращается (обратный вызов никогда не выполняется).
Код
var express = require('express')
, RedisStore = require('connect-redis')(express)
, everyauth = require('everyauth')
, Promise = everyauth.Promise
, app = express.createServer()
, authConfig = require('./auth_config');
// Configure server to allow reverse proxy (nginx) to handle SSL requests
app.enable('trust proxy');
app.set('env', process.env.npm_package_config_env);
//everyauth config
everyauth.facebook
.appId(authConfig.facebook.appId)
.appSecret(authConfig.facebook.appSecret)
.redirectPath(authConfig.facebook.redirectPath)
.scope(authConfig.facebook.scope)
.popup(true)
.findOrCreateUser(function(session, accessToken, accessTokExtra, fbUserMetadata){
...
});
app.configure(function(){
// Check if behind secure reverse-proxy
app.use(require('./middleware/secureProxyCheck')());
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
secret: 'imnottelling',
store: new RedisStore({ host: "127.0.0.1", port: "6379" }),
cookie: { secure: true }
}));
//WARNING: do not change the order of everyauth and router
app.use(everyauth.middleware());
app.use(app.router);
app.use(require("./middleware/dynamicCacheHeaders")("sha256"));
});
/*app.get app.listen beyond this point*/
Версии
- Узел: 0.8.8
- Экспресс: 2.5.10
- подключить-редис: 1.4.4
- Каждая авторизация: 0.3.0