nodejs + express.js アプリケーションで認証を処理するために、passport.js を使用します。mongodb からユーザーを取得する LocalStrategy をセットアップします
私の問題は、ノード サーバーを再起動するときにユーザーを再認証する必要があることです。私は積極的に開発しており、再起動するたびにログインしたくないので、これは問題です...(+ノードスーパーバイザーを使用しています)
ここに私のアプリのセットアップがあります:
app.configure(function(){
app.use('/static', express.static(__dirname + '/static'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({secret:'something'}));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
そして、セッションのシリアライズ設定:
passport.serializeUser(function(user, done) {
done(null, user.email);
});
passport.deserializeUser(function(email, done) {
User.findOne({email:email}, function(err, user) {
done(err, user);
});
});
connect-mongodb を使用して、ブログで提供されている解決策を試しました (リンクはもう存在しないため、リンクを削除しました) が成功しませんでした
app.use(express.session({
secret:'something else',
cookie: {maxAge: 60000 * 60 * 24 * 30}, // 30 days
store: MongoDBStore({
db: mongoose.connection.db
})
}));
EDIT追加問題:1つの接続のみを行う必要があります(1つの接続限定mongohq無料サービスの使用)
EDIT 2ソリューション(エディションとして、私の評判は今のところ私の質問に答えるには低すぎます
これが、マングースが開始した接続を使用して、私が最終的に見つけた解決策です
app.use(express.session({
secret:'awesome unicorns',
maxAge: new Date(Date.now() + 3600000),
store: new MongoStore(
{db:mongoose.connection.db},
function(err){
console.log(err || 'connect-mongodb setup ok');
})
}));