2016-05-12 13 views
3

私は、セッションを使用してログインモジュールを作成しています(エクスプレスとノードを使用しています)。 ユーザーがログインすると、そのユーザーをセッションに保存します。私は.ejsでセッション値を取得できますかejsでセッション値を取得する方法

req.session.user= ... 

は次のように表示します。

<label> 
      您好!<%= req.session.user.username %> 
</label> 

しかし、これは動作しません。

私は、このことによってそれを行うことができます。

router.get('/home',function(req, res){ 

    var val = req.session.user; 
    res.render('home',{user:val}); 


}); 

.ejs:

<p> 
      您好!<%= user.username %> 
</p> 

しかし、これはとても面倒です。 より良い方法は何ですか?

(PHPでは、私はちょうどビューファイルに値を取得するために$ _SESSIONを使用することができます。)

答えて

7

あなたはすべてのテンプレートに特定のデータを公開するためにres.localsを使用することができます。

app.use(function(req, res, next) { 
    res.locals.user = req.session.user; 
    next(); 
}); 

をこれは、すべてのテンプレートでuser変数を利用できるようになります。自分の状況で

、あなたはエクスプレスには、以下のミドルウェアを追加することができます。

あなたはreq.session後は(express-sessionは、ミドルウェア・チェーンに追加された後に通常である)が設定されていることミドルウェアを追加することを確認する必要があります。

+0

ありがとうございます。あなたの助けによって、私は私の問題を解決しました。 –