javascript - 用户登录时无法将登录按钮更改为动态注销
问题描述
我不知道在这里做什么,我试图在用户登录时将登录按钮更改为注销!
错误: 未定义登录
我不知道如何定义登录并将其发送到 wlecome.ejs 老实说,我有点迷失在代码之间。你能帮我解决这个问题吗?太感谢了。对此,我真的非常感激。
应用程序.js
const express = require("express");
const router = express.Router();
const bcrypt = require("bcryptjs");
const User = require("../models/User");
const passport = require("passport")
router.get("/login", (req, res) => res.render("login"));
router.get("/register", (req, res) => res.render("register"));
router.post('/register', (req, res) => {
const { name, email, password, password2 } = req.body;
let errors = [];
if (!name || !email || !password || !password2) {
errors.push({ msg: 'Please enter all fields' });
}
if (password != password2) {
errors.push({ msg: 'Passwords do not match' });
}
if (password.length < 6) {
errors.push({ msg: 'Password must be at least 6 characters' });
}
if (errors.length > 0) {
res.render('register', {
errors,
name,
email,
password,
password2
});
} else {
User.findOne({ email: email }).then(user => {
if (user) {
errors.push({ msg: 'Email already exists' });
res.render('register', {
errors,
name,
email,
password,
password2
});
} else {
const newUser = new User({
name,
email,
password
});
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
newUser.password = hash;
newUser
.save()
.then(user => {
req.flash(
'success_msg',
'You are now registered and can log in'
);
res.redirect('/users/login');
})
.catch(err => console.log(err));
});
});
}
});
}
});
// Login
router.post('/login', (req, res, next) => {
passport.authenticate('local', {
successRedirect: '/dashboard',
failureRedirect: '/users/login',
failureFlash: true,
})(req, res, next);
});
// Logout
router.get('/logout', (req, res) => {
req.logout();
req.flash('success_msg', 'You are logged out');
res.redirect('/users/login');
});
module.exports = router;
欢迎.ejs
<ul class="nav">
<% if (login) { %>
<li> <a href="/users/logout">Logout</a></li>
<% } else { %>
<li><a href="/users/login">Login</a></li>
<% }%>
</ul>
解决方案
推荐阅读
- jquery - 选择不同选项时如何向数据字段添加正则表达式验证
- python - 基于字符串输入构建动态树
- typescript - Typescript 方法泛型参数和返回类型
- regex - Ruby:解析一个简单的降价文件(具有相似但不相等的结构)并将内容填充到对象的属性中
- c++ - C++“字符串下标超出范围”问题
- javascript - 具有不透明度的 Amcharts 网格颜色
- java - wsdl2java 生成列表
> 而不是属性 - c++ - 不可预测的复制省略?
- python - 将 3D 数组拆分为固定维度的较小块的 Pythonic 方法
- android - 当我尝试更改活动时,我的 android 应用程序崩溃了