Node.js 在NodeJs中取消Passport序列化
我正在使用Passport在Nodejs中开发登录系统,一切正常,但当我点击Login时,它会将我带到successRedirect中指定的路径,但会显示一条错误消息 错误消息是下面的函数Node.js 在NodeJs中取消Passport序列化,node.js,express,passport.js,Node.js,Express,Passport.js,我正在使用Passport在Nodejs中开发登录系统,一切正常,但当我点击Login时,它会将我带到successRedirect中指定的路径,但会显示一条错误消息 错误消息是下面的函数 function deserialized(e, u) { pass(i + 1, e, u); } 在控制台中,我也收到了同样的消息 处理请求 module.exports.Login=function(req,res,next){ passport.authenticate(
function deserialized(e, u) {
pass(i + 1, e, u);
}
在控制台中,我也收到了同样的消息
处理请求
module.exports.Login=function(req,res,next){
passport.authenticate('local',{
successRedirect:'/Dashboard',
failureRedirect:'/Login',
failureFlash:true
})(req,res,next)
}
passport.js文件
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcryptjs');
const bodyparser = require('body-parser')
const conn = require('../Model/db');
const flash=require('express-flash')
module.exports = function(passport) {
passport.use(new LocalStrategy({usernameField:'Email'},function(Email,password,done){
var select=`SELECT * FROM user WHERE email='${Email}'`;
conn.query(select,(err,user)=>{
if(err) throw err;
if(user.length == 0 )
{
done(null,false,{message:'incorrect Login Information'})
}
else{
bcrypt.compare(password,user[0].Password,(err,resdb)=>{
if(err) throw err;
if(resdb==true){
done(null,user,{message:'Successfully loged in'})
}
else{
done(null,false,{message:'incorrect Login Information'})
}
})
}
})
}))
passport.serializeUser((user,done)=>{
done(null,user[0].id)
})
passport.deserializeUser(function(id,err){
if(err) throw err;
var select=`SELECT * FROM user WHERE id='${id}'`;
conn.query(select,(err,user)=>{
done(err,user)
})
})
}
尝试使用此选项来处理请求:
app.post('/Login', passport.authenticate('local', { successRedirect: 'Dashboard', failureRedirect: '/Login', failureFlash:
然后,您可以使用此选项查看用户是否已登录:
function loggedIn(req, res, next) {
if (req.isAuthenticated()) {
next()
} else {
res.render('Login.ejs')
}
}
因此:
这只会保护路线,不会解决我的问题
app.get('/', loggedIn, (req, res) => {
res.render('Dashboard.ejs', { email: req.user.email })
})