Javascript 在passport身份验证和重定向方面遇到问题

Javascript 在passport身份验证和重定向方面遇到问题,javascript,node.js,authentication,Javascript,Node.js,Authentication,我尝试了所有可能的方法,但肯定有一些我无法识别 index.js auth.js users.js 在此处输入代码 const express=require('express'); const router=express.router(); const User=require('../models/User'); const bcrypt=require('bcryptjs'); const ejs=require('ejs'); const passport=require(‘passp

我尝试了所有可能的方法,但肯定有一些我无法识别

index.js auth.js users.js
在此处输入代码
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’);
//登录页面
路由器.get('/login',(req,res)=>{
res.render(“登录”);
})
//注册页
路由器.get('/register',异步(req,res)=>{
res.render(“寄存器”);
})
//寄存器句柄
路由器.post('/register',(req,res)=>{
const{username,password}=req.body;
让错误=[];
//检查必填字段
如果(!用户名和密码){
错误。推送({msg:“请填写所有字段”})
}
//检查密码长度
if(password.length<6&&password>0){
错误。推送({msg:“密码应至少为6个字符”
})
}
如果(errors.length>0){
res.render('寄存器'{
错误,
用户名,
密码
},console.log(错误));
}否则{
//通过验证
User.findOne({username:username})
。然后(异步用户=>{
如果(用户){
//用户存在
错误。推送({msg:“用户名已被占用”
});
res.render('寄存器'{
错误,
用户名,
密码
});
}否则{
常量盐=等待B晶型盐(10);
const hashedPassword=等待
bcrypt.hash(密码,salt);
const newUser=新用户({
用户名:用户名,
密码:hashedPassword,
});
newUser.save()
。然后(用户=>{
//res.status(201).json(用户);
请求flash('success\u msg','您现在是
注册‘)
res.redirect('/users/login');
})
.catch(err=>console.log(err));
}
})
.catch(错误=>{
控制台日志(err);
})
}
});
//登录句柄
router.post(“/login”,
passport.authenticate('local'{
successRedirect:“/dashboard”,
failureRedirect:“/users/login”,
failureFlash:正确
})
);
//注销句柄
路由器.get('/logout',(req,res)=>{
请求注销();
请求闪存(“成功消息”,“您已注销”);
res.redirect('/users/login');
})
module.exports=路由器;
因此,这些代码正在工作,没有给出任何类型的错误,只是在登录后,在删除时它不会将我呈现到仪表板
从router.get('/dashboard')中“EnsureReauthenticated”可以工作,但当它工作时,注销句柄不工作

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;