我尝试了所有可能的东西,但肯定有一些我无法识别的东西
const express = require('express');
const router = express.Router();
const { ensureAuthenticated } = require('../config/auth');
// Home Page
router.get('/', (req, res) => {
res.render('home');
});
//DashBoard
router.get('/dashboard', ensureAuthenticated, (req, res) => {
res.render('dashboard');
})
module.exports = router;
module.exports = {
ensureAuthenticated: function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
req.flash('error_msg', 'Please login first');
res.redirect('/users/login');
}
}
enter code here
const express = require('express');
const router = express.Router();
const User = require('../models/User');
const bcrypt = require('bcryptjs');
const ejs = require('ejs');
const passport = require('passport');
// Login Page
router.get('/login', (req, res) => {
res.render('login');
})
//Register Page
router.get('/register', async(req, res) => {
res.render('register');
})
// Register Handle
router.post('/register', (req, res) => {
const { username, password } = req.body;
let errors = [];
// Check required fields
if (!username && !password) {
errors.push({ msg: "Please fill all fields" })
}
// Check password length
if (password.length < 6 && password > 0) {
errors.push({ msg: "Password should be atleat 6 characters"
})
}
if (errors.length > 0) {
res.render('register', {
errors,
username,
password
}, console.log(errors));
} else {
// Validation passed
User.findOne({ username: username })
.then(async user => {
if (user) {
//User exists
errors.push({ msg: "username has already taken"
});
res.render('register', {
errors,
username,
password
});
} else {
const salt = await bcrypt.genSalt(10);
const hashedPassword = await
bcrypt.hash(password, salt);
const newUser = new User({
username: username,
password: hashedPassword,
});
newUser.save()
.then(user => {
// res.status(201).json(user);
req.flash('success_msg', 'You are now
registered')
res.redirect('/users/login');
})
.catch(err => console.log(err));
}
})
.catch(err => {
console.log(err);
})
}
});
// Login Handle
router.post('/login',
passport.authenticate('local', {
successRedirect: '/dashboard',
failureRedirect: '/users/login',
failureFlash: true
})
);
// Logout Handle
router.get('/logout', (req, res) => {
req.logout();
req.flash('success_msg', 'You are logged out');
res.redirect('/users/login');
})
module.exports = router;
所以这些是一些有效的代码,没有给出任何错误,除了登录后它不会在删除时将我呈现到仪表板
来自 router.get('/dashboard') 的“ensureAuthenticated”它可以工作,但是当它工作时,注销句柄不起作用。