【发布时间】:2019-05-12 18:51:26
【问题描述】:
所以我正在构建一个简单的身份验证应用程序,并使用快速会话来执行此操作。对于 UI,我需要在导航栏中显示一个用于登录的按钮(如果用户尚未这样做),以及一个用于注销的按钮(如果他们已经登录)。
问题是,如果不对每条路线使用相同的代码,我不确定如何在我的所有路线中存储此状态。目前我在索引路线上有这个,效果很好:
/* GET home page. */
router.get('/', function(req, res, next) {
var logged_in = false;
if (req.session.userId) {
logged_in = true;
}
res.render('general/index', { is_logged_in: logged_in});
});
在导航栏中,我像这样动态显示按钮:
<% if( is_logged_in){ %>
<li class="nav-item active">
<a class="nav-link" href="/users/logout">Logout<span class="sr-only">(current)</span></a>
</li>
<% } else { %>
<li class="nav-item active">
<a class="nav-link" href="/login">Login<span class="sr-only">(current)</span></a>
</li>
<% } %>
但问题是,如果我想让它适用于导航栏,我必须为每条路线使用相同的代码,这违背了 DRY 编码实践。如何动态显示此按钮,而不必在每条路由上重复相同的代码,检查用户会话 ID 是否存在?我是否设置了一个全局变量?我是 Express 的新手,所以感谢所有帮助。谢谢
【问题讨论】:
标签: node.js express express-session