无法发布/使用快递和正文解析器

时间:2019-02-28 18:04:08

标签: node.js express body-parser

已经问过这个问题,但其他答案对我没有帮助。我有一个解析用户名和密码并从数据库进行身份验证的登录表单,并且不断收到i1 <- dt[, Reduce(`|`, lapply(.SD, `==`, 10)), .SDcols = cols] test2 <- dt[i1] identical(test1, test2) #[1] TRUE 错误。

Cannot POST /

用于登录的Pug文件:

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');
});

我在哪里弄错了?

3 个答案:

答案 0 :(得分:1)

您尝试在/login路线登录,但将帖子发送到/。将帕格更改为

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

顺便说一句:如果您使用Passport,则可以轻松添加其他登录方法:Google,FB,Twitter,...

答案 1 :(得分:0)

我看不到快递应用程序在哪里处理帖子

执行以下操作:

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

答案 2 :(得分:-1)

我建议您使用JWT令牌身份验证,因此您不必担心先在/ login上调用“ ./get”,然后再调用“ ./post”来检查会话。

使用JWT可以令牌,您可以简单地提供令牌验证,如果令牌到期或重定向到新页面时进行验证,它将自动重定向到登录页面。

此外,如果您进一步了解JWT,那么您会发现,您还可以通过令牌传递数据,根据用户登录名可以是Permissions。