私は次のようにエクスプレスセッションとパスポートセッションを実装しようとしています。
app.use(connect.bodyParser());
app.use(express.cookieParser());
app.use(express.session({
cookie: {
path: "/",
httpOnly: true,
maxAge: null
},
store: redisStoreConnect,
secret: "something",
key: 'pksy.sid'
}));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser (user, done) ->
done null, user.email
return
passport.deserializeUser (email, done) ->
User.findOne
email: email
, (err, user) ->
done err, user
return
return
サイトのページに移動すると、新しいセッションが作成され、redisに保存されます。そのページを更新すると、セッションが継続しているように見えます。新しいページに移動した場合、またはタブを閉じて同じページを再度開いた場合でも、新しいセッションが作成されます。
パスポートはログインページ用に生成されたセッションのみを認証するため、これは特に苛立たしいことです。セッションをページ間で持続させるにはどうすればよいですか?
更新:ブラウザが実際に返送されたCookieを確認するように通知してくれた@robertklepに感謝します(開始するにはこれを行う必要がありました)。ブラウザが正しいCookieを送り返し、認証が機能していることがわかりました。セッションは実際には永続化されていますが、何らかの理由で、ページ要求ごとに新しいセッション(ブラウザーで使用されていない)が作成されます。どうすればこれを止めることができますか?