用户登录时动态注销"/>
无法更改登录按钮以在用户登录时动态注销
我不知道该怎么办,我正在尝试将登录按钮更改为在用户登录时注销!
这里是错误
“未定义登录”
我不知道如何定义登录并将其发送到wlecome.ejs老实说,我介于代码之间。你能帮我吗非常感谢。我真的很感激
这是我的app.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;
这是我的welcome.ejs
<ul class="nav">
<% if (login) { %>
<li> <a href="/users/logout">Logout</a></li>
<% } else { %>
<li><a href="/users/login">Login</a></li>
<% }%>
</ul>
回答如下:未定义,因为您未通过它:
router.get("/", (req, res) => res.render("welcome"));
应该看起来像这样
router.get("/", (req, res) => {
res.render("welcome", {
login: false //or true
})
});
更多推荐
无法更改登录按钮以在用户登录时动态注销
发布评论