最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

无法更改登录按钮以在用户登录时动态注销

网站源码admin21浏览0评论

无法更改登录按钮以在用户登录时动态注销

无法更改登录按钮以在用户登录时动态注销

我不知道该怎么办,我正在尝试将登录按钮更改为在用户登录时注销!

这里是错误

“未定义登录”

我不知道如何定义登录并将其发送到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
    })
});
发布评论

评论列表(0)

  1. 暂无评论