1. ホーム
  2. node.js

[解決済み] passport.jsでユーザーがログインしているかどうかを知るには?

2022-09-28 09:12:31

質問

私が読んでいるのは passport.js の情報やサンプルを2日間読みましたが、その後、認証のすべてのプロセスを行ったかどうかわかりません。

ログインしているかどうかを知るには、例えばナビゲーションバーにログインやログアウトのボタンがありますが、下にコードのような変数があるのでしょうか?

if (login)
   <button>logout</button>
else 
   <button>login</button>

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

ユーザーがログインしている場合 passport.js が作成されます。 user オブジェクトを req の各リクエストに対して express.js にあるすべてのリクエストについて、を定義します。これは、任意のミドルウェアで存在を確認することができます。

if (req.user) {
    // logged in
} else {
    // not logged in
}

単純な express.js ミドルウェアを作成し、ユーザがログインしているかどうかをチェックし、ログインしていない場合は /login ページにリダイレクトします。

function loggedIn(req, res, next) {
    if (req.user) {
        next();
    } else {
        res.redirect('/login');
    }
}

そして、それを使う。

app.get('/orders', loggedIn, function(req, res, next) {
    // req.user - will exist
    // load user orders and render them
});