114

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

ログインしているかどうかを確認するにはどうすればよいですか。たとえば、ログイン ボタンまたはログアウト ボタンのあるナビゲーション バーが表示されます。以下のコードのような変数はありますか?

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

6 に答える 6

228

ユーザーがログインしている場合、はすべてのリクエストに対して にオブジェクトpassport.jsを作成します。このオブジェクトは、任意のミドルウェアに存在するかどうかを確認できます。userreqexpress.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
});
于 2013-09-11T11:29:11.497 に答える
50

コードサンプルが次のようなミドルウェアを作成できることを示しているように、テンプレートで使用したい場合:

app.use(function (req, res, next) {
  res.locals.login = req.isAuthenticated();
  next();
});

パスポートをセットアップした後、そのコードをどこかに配置します。

そして、それをテンプレートで使用します(swigの例)

{% if login %}
<button>logout</button>
{% else %} 
<button>login</button>
{% endif %}
于 2013-11-18T19:52:02.380 に答える