При отправке формы логин/пароль выводит сообщение об успешной авторизации, но, как только я обращаюсь к защищенному пути (в коде, для примера, это путь
/word), то выводится сообщение о том, что я не авторизован.
Возможно проблема в том, что я обращаюсь с одного адреса react.js на другой адрес express.js. Как я это понял? В Postman авторизация и последующий доступ к защищенным путям работает отлично.
Отсюда вопрос: как можно это обойти или исправить? Спасибо.
app.use(cors());
app.use('/downloads', express.static('downloads'));
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(session({ secret: 'SECRET' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
passport.use('login', new LocalStrategy({
usernameField: 'username',
passwordField: 'password',
passReqToCallback: true
}, (req, username, password, done) => {
db.query('SELECT * FROM users WHERE login=? AND password=?', [username, password], (err, user) => {
if (err) return done(err);
if (user.length) {
console.log(`Succsess login`)
console.log(user)
return done(null, user[0]);
}
console.log('Haven`t this a user');
return done(null, false, req.flash('dsa'));
})
}));
function isAuthenticated(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.send({ status: 'close' })
}
passport.serializeUser((user, done) => {
console.log("Serialize: ", user.ID);
done(null, user.ID);
});
passport.deserializeUser(function (ID, done) {
db.query('SELECT * FROM users WHERE ID=?', [ID], (err, user) => {
if (err) return done(err);
done(null, user[0])
})
});
app.get('/word', isAuthenticated, (req, res) => {
res.send({ word: 'word' })
})
app.post('/login', passport.authenticate('login', {
// successRedirect: '/menu',
failureRedirect: '/',
failureFlash: true,
}));
app.get('/signout', (req, res) => {
req.logout();
console.log('signout')
res.send('yes')
});