以下是我的代码
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);
一切正常,我可以输入user / 123456789然后显示Logout链接。 但是,在我单击“注销”链接后,它会在页面上显示“无法获取/注销”。
我错过了什么吗?
答案 0 :(得分:1)
POST
只有/logout
操作的路线。点击链接会生成GET
个请求,而不是POST
。
也许您的意思是将此更改为这样的GET处理程序 - 将login.post()
更改为login.get()
:
login.get('/logout', function(req, res) {
req.session.logined = false;
res.redirect('/login');
res.end();
});