当用户使用节点 js 和 ejs 登录时隐藏登录和注册按钮并显示注销按钮
hide login and sign up buttons and display logout button when user logs in using node js and ejs
我已经使用节点 js、ejs 和 mongodb 成功创建了我的第一个 Web 应用程序。
我想在用户登录时隐藏我的 login/sign 向上链接,并希望在我的头文件中显示注销按钮。
有人有解决办法吗?我已经试过了 Expressjs how to show / hide a div in case user its logged
但是由于某些原因,ejs文件中的user变量被初始化为null,所以只有一种情况正在执行
这是我的 header.ejs 文件:
<h1><a href="/">RideShare</a></h1>
<ul>
<li><a href="/find">Find a ride</a></li>
<li><a href="/create">Create a ride</a></li>
<li><a href="/myrides">My rides</a></li>
<%if (!user) { %>
<li><a href="/login">Sign in</a></li>
<li><a href="/register">Sign Up</a></li>
<% }else{ %>
<form action="/logout?_method=DELETE" method="POST">
<button type="submit">Log Out</button>
</form>
<%}%>
</ul>
我认为您应该在本地会话登录后设置用户数据
server.js
app.use(function (req, res, next) {
res.locals.session = req.session;
next();
});
headers.ejs
<h1><a href="/">RideShare</a></h1>
<ul>
<li><a href="/find">Find a ride</a></li>
<li><a href="/create">Create a ride</a></li>
<li><a href="/myrides">My rides</a></li>
<%if (!locals.session.loggedin) { %>
<li><a href="/login">Sign in</a></li>
<li><a href="/register">Sign Up</a></li>
<% }else{ %>
<form action="/logout?_method=DELETE" method="POST">
<button type="submit">Log Out</button>
</form>
<%}%>
</ul>
并将其输入您的登录名API
router.post('/login', (req, res) => {
req.session.loggedin = true
})
我已经使用节点 js、ejs 和 mongodb 成功创建了我的第一个 Web 应用程序。
我想在用户登录时隐藏我的 login/sign 向上链接,并希望在我的头文件中显示注销按钮。
有人有解决办法吗?我已经试过了 Expressjs how to show / hide a div in case user its logged 但是由于某些原因,ejs文件中的user变量被初始化为null,所以只有一种情况正在执行
这是我的 header.ejs 文件:
<h1><a href="/">RideShare</a></h1>
<ul>
<li><a href="/find">Find a ride</a></li>
<li><a href="/create">Create a ride</a></li>
<li><a href="/myrides">My rides</a></li>
<%if (!user) { %>
<li><a href="/login">Sign in</a></li>
<li><a href="/register">Sign Up</a></li>
<% }else{ %>
<form action="/logout?_method=DELETE" method="POST">
<button type="submit">Log Out</button>
</form>
<%}%>
</ul>
我认为您应该在本地会话登录后设置用户数据
server.js
app.use(function (req, res, next) {
res.locals.session = req.session;
next();
});
headers.ejs
<h1><a href="/">RideShare</a></h1>
<ul>
<li><a href="/find">Find a ride</a></li>
<li><a href="/create">Create a ride</a></li>
<li><a href="/myrides">My rides</a></li>
<%if (!locals.session.loggedin) { %>
<li><a href="/login">Sign in</a></li>
<li><a href="/register">Sign Up</a></li>
<% }else{ %>
<form action="/logout?_method=DELETE" method="POST">
<button type="submit">Log Out</button>
</form>
<%}%>
</ul>
并将其输入您的登录名API
router.post('/login', (req, res) => {
req.session.loggedin = true
})