2017-11-01 8 views
1

私は、ユーザーがログオンした後、ログイン/サインアップボタンを削除しようとしているが、私はどのように理解するように見えることはできません。これは私が変更したい私のヘッダーファイルの一部です。Node.js/Expressでアクティブなユーザーセッションがある場合、HTMLコンテンツを変更する方法はありますか?

<section class="header"> 
    <div class="wrapper"> 
     <nav class="navigation"> 
      <ul> 
       <li><a href="/">Images</a></li> 
       <li><a href="/albums">Albums</a></li> 
       <li><a href="/tags">Tags</a></li> 
       <li><a href="/upload">Upload</a></li> 
      </ul> 
      <button class="logIn">Log In</button> 
      <button class="signUp">Sign Up</button> 
     </nav> 
    </div> 

これは、ユーザーのIDにreq.session.user_idを設定し、私のログインルートです。私が行われなければならないと思う何

var express = require('express'); 
var router = express.Router(); 
var db = require('../helpers/db'); 
var Password = require("node-php-password"); 

router.post('/', function(req, res, next) { 
    var username = req.body.username; 
    var password = req.body.password; 

    db.query('SELECT * FROM user WHERE username = ?', [username], function (error, results, fields) { 
    if (error) throw error; 
    var userId = results[0].id; 
    var hash = results[0].password; 

    if(Password.verify(password, hash)){ 
     req.session.user_id = userId; 
     res.redirect('/'); 
    } 
    }); 



}); 

module.exports = router; 

は、ヘッダファイルにreq.session.user_idを渡すことで、私はどのようにわかりません。私はテンプレートエンジンとしてEJSを使用します。

+0

あなたは静的なHTMLを変更することはできませんので、これはEJSまたはハンドル –

+0

のようないくつかのビューエンジンを使用してみてください直接実行することはできませんが、しかし、私が取得する方法を確信しています私のif文でそれを使用するためにEJSファイル内のセッション。 – Bobimaru

答えて

3

あなたはEJSを使用する場合:

  1. セットレンダラエンジンを

    express.set('view engine', 'ejs'); 
    
  2. テンプレートのために、例えば、あなたのデータを準備します。

    ポストの内側
    let isLoggedIn = [eval your value here] 
    
  3. (「/」)右ブロックの終了前にルート、あなたのテンプレートをレンダリングし、あなたのテンプレートでは

    res.render('pages/index', { 
        isLoggedIn: isLoggedIn 
    }); 
    
  4. 必要なデータを渡す適切な場所であれば追加しますここで

    <%if (!isLoggedIn) { %> 
        (...render button) 
    <% } %> 
    

あなたがPAにどのように理解するのに役立つことができa nice tutorialです私はEJSを使用していビューにモデルからのSSデータ

関連する問題