簡體   English   中英

無法發布/使用快遞和正文解析器

[英]Cannot POST / using express and body-parser

已經提出了這個問題,但其他答案對我沒有幫助。 我有一個解析用戶名和密碼的登錄表單,並從數據庫進行身份驗證,但我不斷收到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')

我在哪里弄錯了?

您嘗試在/login路徑上/login ,但將帖子發送到/ 改變你的哈巴狗

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

順便說一句:如果您使用Passport ,則可以輕松添加其他登錄方法:Google,FB,twitter,...

我看不到快遞應用程序在哪里處理帖子

做這個:

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

我建議您使用JWT令牌身份驗證,因此您不必擔心先在/ login上調用“ ./get”,然后再調用“ ./post”來檢查會話。

使用JWT,您可以通過令牌來簡單地提供令牌驗證,如果令牌過期或在重定向到新頁面時進行驗證,它將自動重定向到登錄頁面。

另外,如果您進一步了解JWT,那么您會發現,您還可以通過令牌傳遞數據,根據用戶登錄名可以是Permissions。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM