express4でnodejsアプリケーションでpassportjsを使用しようとしています。テスト目的のために、セッションを維持するためにsession-file-storeを使用しています。Passportjsのセッションに関する問題
私はセッションとpassportjs設定方法:しかし
this.app.use(session({
secret: process.env.SESSION_SECRET || configuration.session_secret,
store: new fileStore(),
resave: false,
saveUninitialized: false
}));
// config authentication
this.app.use(passport.initialize());
this.app.use(passport.session());
// Configure Passport
passport.use('local-login', new localStrategy.Strategy(
(username, password, done) => {
Services.users.authenticatePromise(username, password).then(
function(token) {
done(null, token);
},
function(err) {
done(null, false, err);
},
).done();
},
));
// Serialize user in session
passport.serializeUser((token: AccessToken, done) => {
let user = {
_token: token.accessToken,
_expiryInAt: token.expiryInMs + new Date().getTime(),
};
done(null, user);
});
passport.deserializeUser((sessionUser, done) => {
done(null, sessionUser);
});
は、私が午前問題は、ユーザーがログインしている前に、私はセッションには何も書いていない場合は、passportjsが正常に動作していることです。しかし、ショッピングカートの詳細のようなセッションにデータを書き込もうとすると、passportjsはユーザートークンをセッションストアにもうシリアル化できなくなります。ログインは成功しません。
私には何が欠けていますか?
あなたは 'req.session = {...}'または類似した何かをやっていますか?私。セッションオブジェクト全体を新しいもので上書きします。 – robertklep
いいえ、私は次のようにしました: '' 'if(!req.session ['basket']){ req.session ['basket'] = {}; } '' ' – rzhomx
申し訳ありませんが、シリアル化に失敗しているので、とにかく問題ではありません。 'passport.serializeUser/deserializeUser'の実装をあなたの質問に追加できますか?また、「シリアル化できないだろう」ということは、まさにその意味ですか? – robertklep