1. ホーム
  2. node.js

[解決済み] Node + Express + Passport: req.user 未定義

2023-06-11 20:54:54

質問

私の質問は、次のようなものです。 1 に似ていますが、彼の解決策への洞察はありませんでした。

Passport を使用して Instagram を使用して認証しています。 認証に成功すると、ユーザーは "/" に誘導されます。 この時点では、リクエストはユーザー オブジェクトを持っています (つまり、機能しています)。 しかし、一度リダイレクトすると、req.userは未定義です :'(

奇妙なのは、passport.deserializeUserがリクエストごとに呼び出されていることです。 これは正常にユーザーオブジェクトを取得していますが、ミドルウェアのどこかでreq.userが設定されていない(または設定されていない)状態になっているのです。

// on successful auth, goto "/" 
app.get('/', function(req, res) {
    // if the request has the user object, go to the user page
    if (req.user) {
        res.redirect("/user/" + req.user._id);
    }

    res.render("index");
}

app.get('/user/:uid', function(req, res) {
    console.log(req.user) // undefined
}

どのように解決するのですか?

あなたのアプリにセッション状態を設定しましたか?もししていないなら、次のようなものが必要です...

app.use(session({ secret: 'anything' }));
app.use(passport.initialize());
app.use(passport.session());