gpt4 book ai didi

node.js - 如何在主 Handlebars 布局中编写快速 session 登录/注销的条件?

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:49 24 4
gpt4 key购买 nike

我在 Controller 中编写了登录/注销路由。

//LOGIN FORM
app.get('/login', function (req, res) {
res.render('../views/signup-signin/login');
});

//LOGIN POST
app.post('/login', function (req, res) {
User.find(req.body.username, function (user) {
bcrypt.compare(req.body.password, user.password, function (err, result) {
if (result) {
req.session.currentUser = user.id;
res.redirect('/');
} else {
res.redirect('/login');
}
});
});
});

//LOGOUT
app.delete('/logout', function (req, res) {
req.session.currentUser = null;
res.redirect('/');
});

我遇到的问题是能够在“main.handlebars”布局中编写 if/else 语句,当 req.session.currentUser = null 时呈现注册/登录,并在 req.session 时呈现注销。当前用户 = 用户.id

<div id="signin_up">
<a href="/signup"><button>Sign Up</button></a>
<a href="/login"><button>Login</button></a>
</div>

<form action="/logout" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="Logout">
</form>

我不知道如何访问 session ID 并将其写入“main.handlebars”文件中的脚本标记中。

谁能帮我让这个功能正常工作吗?

提前谢谢!

最佳答案

我一直在处理与您使用 Node/Express/Handlebars 描述的注册/登录界面类似的问题,我找到了一个很好的解决方案,您所做的就是将所需的 session 数据作为变量传递加载页面的路线。

作为一个注释,我认为您已经解决了 session 问题。

您必须意识到的主要事情是, Handlebars 布局/ View (即 FileName.handlebars)是在 route 传递页面(或动态)变量。

因此,您需要做的就是转到路由,确定您的 session 是否已设置,然后将其作为变量传递到加载页面。

在 Handlebars 中,您可以使用以下方式访问传递的变量:

{{variable}}

在 HTML 中

考虑到这一点,并回到您的问题,您需要基于此变量创建一个条件句柄,如下所示。

{{#if variable}}
<!-- SHOW LOGIN -->
{{else}}
<!-- SHOW LOGOUT -->
{{/if}}

然后,如果您的变量在页面加载时设置,您会看到登录,否则您会看到注销。

我个人的问题是,我的布局中有管理功能,我显然只想让管理员看到,所以我在我的 route 以这种方式解决了这个问题:

let admin;

if(req.session.type == "admin"){
admin = "T";
}

res.render("account", {
pageTitle:"Account Information",
admin: admin
});

然后在 Handlebars 布局中我做了这样的事情:

{{#if admin}}
<!-- SHOW WHAT I NEED -->
{{/if}}
<小时/>

您也可以在 route 创建表单代码并将 HTML 作为变量传递到 Handlebars 布局。我认为这会很痛苦,但这是可能的。不过,请注意,如果您想将 HTML 传递到 Handlebars View ,您需要将其用 3 个大括号括起来,如下所示:

{{{HTMLVariable}}}

否则我很确定它会传递到页面并转义 HTML 字符。

关于node.js - 如何在主 Handlebars 布局中编写快速 session 登录/注销的条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32858363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com