繁体   English   中英

如果与Node.js / Express存在活动用户会话,如何更改HTML内容?

[英]How to change HTML content if there's an active user session with Node.js/Express?

我试图在用户登录后删除登录/注册按钮,但我似乎无法弄清楚如何。 这是我要更改的头文件的一部分。

<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>

这是我的登录路由,它将req.session.user_id设置为用户的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作为模板引擎。

如果您使用EJS,那么:

  1. 设置渲染器引擎

     express.set('view engine', 'ejs'); 
  2. 为模板准备数据,例如。

     let isLoggedIn = [eval your value here] 
  3. 在post('/')路径内,就在块结束之前,渲染模板并传递所需的数据

     res.render('pages/index', { isLoggedIn: isLoggedIn }); 
  4. 在模板中,在适当的位置添加if

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

这是一个很好的教程 ,可以帮助您了解如何将数据从模型传递到视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM