[英]Why I cannot post data in express with nodes?
Below is my code下面是我的代码
var express = require("express");
var app = express();
var session = require('express-session');
var login = express.Router();
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({
secret: "HelloExpressSESSION",
resave: true,
saveUninitialized: true
}));
login.get('/login_page', function(req, res){
if(req.session.logined) {
res.send('<a href=\"/logout\">Logout</a>');
res.end();
return;
}
res.send('<form action=\"/login\" method=\"POST\">' +
'<input type=\"text\" name=\"username\">' +
'<br/>' +
'<input type=\"password\" name=\"password\">' +
'<br/>' +
'<input type=\"submit\" value=\"Log In\">' +
'</form>');
res.end();
});
login.post('/login', function(req, res) {
if(req.body.username != 'user' || req.body.password != '123456789') {
res.send('Wrong information!');
res.end();
return;
}
req.session.logined = true;
console.log("hi");
res.redirect('/login_page');
res.end();
});
login.post('/logout', function(req, res) {
req.session.logined = false;
res.redirect('/login');
res.end();
});
app.use('/', login);
app.listen(12345);
Everything is ok, I can input user/123456789 and then show Logout link.一切正常,我可以输入 user/123456789 然后显示注销链接。 However, after I click Logout link, it shows "Cannot GET /logout" on the page.但是,在我单击注销链接后,它在页面上显示“无法获取/注销”。
Did I missing something?我错过了什么吗?
You only have a route for a POST
operation for /logout
.您只有/logout
的POST
操作路由。 Clicking on a link would generate a GET
request, not a POST
.单击链接将生成GET
请求,而不是POST
。
Perhaps you mean to change this to a GET handler like this - change login.post()
to login.get()
:也许您的意思是将其更改为这样的 GET 处理程序 - 将login.post()
更改为login.get()
:
login.get('/logout', function(req, res) {
req.session.logined = false;
res.redirect('/login');
res.end();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.