わかりましたので、これを理解しようとして頭を壁にぶつけています! Facebook経由で認証しようとしています。
Amazon ec2 サーバーで Express を実行しているノード (0.6.13) があります。私は認証にeveryauthを使用しており、永続化のためにmongodb(mongodbネイティブおよびconnect-mongodb)を使用しています。mongo をインスタンス化する方法は次のとおりです。
var MongoStore = require('connect-mongodb');
var mongo = require('mongodb');
var mongoServer = new mongo.Server('localhost', 27017, {auto_reconnect: true, native_parser: true})
var mongoStore = new MongoStore({
db: new mongo.Db('test', mongoServer, {})
, reapInterval: 3000
});
私はeveryauthを使ってFacebookで認証しようとしています。したがって、私のアプリがhttp://ec2ip:3000/のポート 3000 で実行されていると仮定しましょう。Facebook アプリの設定では、ウェブサイトがhttp://ec2ip:3000/にリダイレクトされています。
Express は次のようにセットアップされます。
app.get('/', function (req, res) {
if(!req.session.auth || !req.session.auth.loggedIn)
{
console.log("Not authorized!");
res.redirect('/auth/facebook/');
}
else
{
console.log("Authorized!");
res.sendfile(__dirname + '/www/index.html');
}
});
これは、サーバーに配置する前にローカルで機能していました。Facebookで正しく認証され、私のWebサイトにリダイレクトされますが、req.session.authは常に未定義であり、永久にリダイレクトされます。認証に成功したことはわかっていますが、正しいセッション情報を渡していないだけです。
セッション情報が維持されるようにリダイレクト要求を適切に設定することと関係がありますが、内部でどのように機能しているのかわかりません。
アドバイス/ヘルプをいただければ幸いです。これらは私が抱えている関連する質問/問題ですが、私の場合に適用する方法がわかりません: https://github.com/bnoguchi/everyauth/issues/189およびNode.js & Express セッションの問題