这个问题已经被问过了,但是其他的答案对我没有帮助。我有一个登录表单,解析用户名和密码,并从数据库中对其进行身份验证,但我一直收到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')
我哪里搞错了?
发布于 2019-03-01 04:04:58
您尝试在/login
路由上登录,但将post发送到/
。将您的pug更改为
form(action='/login', method='POST')
顺便说一下:如果你使用Passport,你可以很容易地添加其他登录方式: Google,FB,twitter,...
发布于 2019-03-01 02:17:02
我不知道express应用程序在哪里处理帖子
执行以下操作:
app.post('/', function (req, res) {
res.send('hello world')
})
发布于 2019-03-01 02:56:49
我建议您使用JWT令牌身份验证,这样您就不必担心先调用/login上的“./get”,然后调用“./post”来检查会话。
使用JWT,您可以简单地提供令牌验证,如果令牌过期或重定向到新页面时进行验证,该验证将自动重定向到登录页面。
此外,如果你探索更多关于JWT的内容,你会发现,你还可以在令牌中传递数据,它可以是根据用户登录的权限。
https://stackoverflow.com/questions/54931688
复制相似问题