[英]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.