Node.js 使用带有sequelize的passport时,isAuthenticated始终为false
当我试图通过ISAuthentication作为中间件检查工作时,我似乎无法证明这是真的。我已经记录了结果,每次无论我尝试了什么,结果都是假的。我想得到一些关于为什么会发生这种情况的帮助。提前感谢所有愿意帮助我的人。我使用的数据库是mysql,如果有帮助的话Node.js 使用带有sequelize的passport时,isAuthenticated始终为false,node.js,passport.js,sequelize.js,Node.js,Passport.js,Sequelize.js,当我试图通过ISAuthentication作为中间件检查工作时,我似乎无法证明这是真的。我已经记录了结果,每次无论我尝试了什么,结果都是假的。我想得到一些关于为什么会发生这种情况的帮助。提前感谢所有愿意帮助我的人。我使用的数据库是mysql,如果有帮助的话 function isLoggedIn(req, res, next) { if (req.isAuthenticated()){ console.log('user logged in', req.user); r
function isLoggedIn(req, res, next) {
if (req.isAuthenticated()){
console.log('user logged in', req.user);
return next();
}else{
console.log('user not logged in');
res.redirect('/login');
}
}
这是我的路线
app.post('/login', passport.authenticate('local-login', {
successRedirect : '/admin',
failureRedirect : '/login',
failureFlash : true
}));
还有我的passport.js本地战略
passport.use('local-login', new LocalStrategy({
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true
},
function(req, username, password, done) {
models.User.find({ where:{'username' :username }}).then(function(user) {
passwd = user ? user.password : ''
if (!user)
return done(null, false, req.flash('loginMessage', 'No user found.'));
if (!models.User.validPassword(password, passwd))
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
return done(null, user);
});
}));
我这样设置我的server.js
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.json()); // get information from html forms
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'ejs');
app.use(session({
secret: 'tengence' ,
saveUninitialized: true,
resave: true
})); // session secret
require('./config/passport')(passport);
app.use(passport.initialize());
app.use(passport.session()); // persistent login sessions
app.use(flash());
require('./app/routes.js')(app, passport);
app.listen(port);
console.log('Server started at ' + port);
我觉得自己像个白痴,因为我忘了添加这个碰巧调用login的小方法。这是漫长的一天,我的眼睛需要休息
///Very important to not to forget to do below!!
req.login(user, function(err){
if (err) {
return done(null, false, req.flash('loginMessage', 'Something went wrong.' + err));
}
});
请将此答案标记为已接受的答案,因为这样它就不会显示为未回答的问题。:)据我所知,我不能等到明天