Авторизация passport.js проходит успешно.
Хочу сделать так, что бы выход из системы осуществлялся без отверждения (confirm) и уже после выхода из системы была возможность вернуться обратно.
config-passport.js
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
let Sequelize = require('sequelize');
let sequelize = new Sequelize('DBNAME', 'USERNAME', 'PASS', {
host: 'localhost',
dialect: 'mysql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
define: {
timestamps: false
}
});
let Users = sequelize.define('users', {
id: {
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
email: {
type: Sequelize.STRING,
notEmpty: true
}
....
password: {
type: Sequelize.STRING,
allowNull: false
}
....
});
passport.serializeUser(function(user, done) {
done(null, [user.id,user.email,user.password]);
});
passport.deserializeUser(function(id, done) {
Users.findAll({where:{id:id}}).then(function(row){
const user = row[0].dataValues.id === id ? {
id: row[0].dataValues.id,
email: row[0].dataValues.email,
password: row[0].dataValues.password,
} : false;
done(null, {
id: row[0].dataValues.id,
email: row[0].dataValues.email,
password: row[0].dataValues.password,
});
});
});
passport.use(
new LocalStrategy({passReqToCallback : true,usernameField: 'email'}, function(
email,
req,
password,
done
) {
Users.findAll({where:{email:email}}).then(function(row){
if (email === row[0].dataValues.email && password === row[0].dataValues.password) {
return done(null, {
id: row[0].dataValues.id,
email: row[0].dataValues.email,
password: row[0].dataValues.password,
});
} else {
}
return done(null, false);
});
})
);
При выходе из системы ('/logout') я параметры пользователя перегружаю в другую сессию, но вот только как сделать авторизацию через сессии, а не данные отправленные из формы (POST)?
logout
app.get('/logout', (req, res) => {
req.session.comeBack = req.session.passport.user;
req.logOut();
res.json({message:'getout'});
});
Я нашел, что надо в указать passReqToCallback :true в локальной стратегии но он как то не хочет видеть req в passport.use.