![](/img/trans.png)
[英]change and refresh session data in Node.js and express-session
[英]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,那么:
设置渲染器引擎
express.set('view engine', 'ejs');
为模板准备数据,例如。
let isLoggedIn = [eval your value here]
在post('/')路径内,就在块结束之前,渲染模板并传递所需的数据
res.render('pages/index', { isLoggedIn: isLoggedIn });
在模板中,在适当的位置添加if
<%if (!isLoggedIn) { %> (...render button) <% } %>
这是一个很好的教程 ,可以帮助您了解如何将数据从模型传递到视图
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.