Задать вопрос
@lordprotein

Passport.js не сохраняет авторизацию?

При отправке формы логин/пароль выводит сообщение об успешной авторизации, но, как только я обращаюсь к защищенному пути (в коде, для примера, это путь /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')
});
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
maxilamb
@maxilamb
Frontend developer, lover of all new
в package.json настрой proxy
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы