Невозможно POST / используя экспресс и парсер тела - PullRequest
0 голосов
/ 28 февраля 2019

Этот вопрос уже задавался, но другие ответы мне не помогли.У меня есть форма входа в систему, анализирующая имя пользователя и пароль, и я аутентифицирую ее из базы данных, и я получаю Cannot POST / ошибку.

const express = require('express');
const app = express();

app.get('/', sessionChecker, (req, res) => {
    res.redirect('/login');
});
// route for user Login
app.route('/login')
    .get(sessionChecker, (req, res) => {
        res.render('login.pug');
    })
    .post((req, res) => {
    var username = req.body.username;
    var password = req.body.password;

    User.findOne({ where: { username: username } }).then(function (user) {
        if (!user) {
            res.redirect('/login');
        } else if (!user.validPassword(password)) {
            res.redirect('/login');
        } else {
            req.session.user = user.dataValues;
            res.redirect('/dashboard');
        }
    });
});

app.listen(3000, function () {
    console.log('express is running on port 3000');
});

файл pug для входа в систему:

form(action='/', method='POST')        
     input(type='text',name='username',placeholder= 'Username', required='')
     input(type='password', name='password', placeholder='Password', required='')
     input(type='submit', value='Login')

Где я сделалошибка?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Я бы порекомендовал вам использовать аутентификацию токена JWT, поэтому вам не нужно беспокоиться о том, чтобы сначала вызвать ./get 'on / login, а затем' ./post 'для проверки сеанса.

СJWT вы можете токен, вы можете просто предоставить проверку токена, который будет автоматически перенаправлять на страницу входа в случае истечения срока действия токена или проверки при перенаправлении на новую страницу.

Кроме того, если вы узнаете больше о JWT, то обнаружите, что вы можете передавать данные также в токене, это могут быть разрешения в соответствии с логином пользователя.

0 голосов
/ 28 февраля 2019

Вы пытаетесь авторизоваться на маршруте /login, но отправляете сообщение на /.Измените свой мопс на

form(action='/login', method='POST')  

Кстати: если вы используете Паспорт , вы можете легко добавить другой способ входа в систему: Google, FB, Twitter, ...

0 голосов
/ 28 февраля 2019

Я не вижу, где приложение Express обрабатывает сообщение

Сделайте это:

app.post('/', function (req, res) {
  res.send('hello world')
})
...