私はPassport 0.3.2でExpress 4を使用しているアプリを持っています。 /session
エンドポイントにユーザー名とパスワードが送信されたときに正しいユーザー情報を取得しているpassport-local
戦略を設定しました。PassportJSとExpress 4がクッキー/セッションを正しく保存しない
ただし、ユーザー情報は決して正しく保存されません。したがって、req.user
はすべてのリスナーで常に未定義であり、req.isAuthenticated()
は常にfalseを返します。
私は、ミドルウェアの設定に問題があることが多い他の投稿を見ましたが、正しい方法で注文しているので、ここからどこに行くのか分かりません。ここで
app.post("/session",
passport.authenticate('local'),
(req: any, res: any) => {
// if we reach this point, we authenticated correctly
res.sendStatus(201);
}
);
は私LocalStrategy
セットアップです:ここで
passport.use(new LocalStrategy(
(username, password, done) => {
let users = userRepository.getAll();
let usernameFilter = users.filter(u => u.getUsername() === username);
if (!usernameFilter || usernameFilter.length !== 1) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!password || password !== "correct") {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, usernameFilter[0]);
}
));
は私のアプリの設定です:
let app = express();
app.use(cookieParser());
app.use(bodyParser.json());
app.use(expressSession({
secret: 'my secret key',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
私は以下を使用しています。ここ
は/session
のための私のPOST
リスナーです依存バージョン:
"body-parser": "^1.15.1",
"cookie-parser": "^1.4.3",
"express": "^4.13.4",
"express-session": "^1.13.0",
"passport": "^0.3.2",
"passport-local": "^1.0.0"
しかし私は、エラーがスローされ、私のPOST /session
にコールバックを追加しました。
app.post("/session",
passport.authenticate('local', {
session: false
}),
(req: express.Request, res: express.Response) => {
req.logIn(req.user, (err: any) => {
if (err)
throw err;
});
// if we reach this point, we authenticated correctly
res.sendStatus(201);
}
);
私は次のエラーがスローされます:パスポートのドキュメントから
Error: Failed to serialize user into session
あなたのPOSTで – pulse0ne