关于nodejs session 丢失的问题
我刚刚接触编程。写了个小网站,每一个坑我都爬过了, 但最后增加管理员后台的时候,seesion丢失的问题却一直没能解决, 在百度谷歌接近五天了,各种什么放图标啊,记录sessionid啊,加入redis啊,都试过了,还是照样丢失。 实在没有办法,我想应该是我写得不对,希望给为大神教导我正确的方式方法。 症状:在login页面正确登录后,跳转到管理首页index,但是,一点其他管理页面,就立刻跳回login页。 代码如下: start.js
var koa = require('koa');
var favicon = require('koa-favicon');
var vhost = require('koa-vhost');
var render = require('koa-ejs');
var session = require('koa-session-redis');
var bodyParser = require('koa-bodyparser');
var server = koa();
server.use(favicon(__dirname+'/favicon.ico')); //设置favicon
var mma = require('./mma'); //管理后台
server.keys=['mma12haha'];
server.use(session({
store: {
host: '127.0.0.1',
port: 6379,
ttl: 3600,
}
}));
server.use(bodyParser());
server.use(vhost('mma.test.com', mma));
server.listen(80, function() {
console.log('管理后台启动。');
});
mma.js
var koa = require('koa');
var serve = require('koa-static');
var app = koa();
app.use(serve(__dirname + '/static'),{maxage:86400000}); //静态文件夹
app.use(function *(next){
if(this.request.url == '/favicon.ico'){
return;
}
yield next;
});
//设置路由
app.use(require('./route/manage.js').routes()); //管理
module.exports = app;
routes.js
var router = require('koa-router')();
//如果session不对,则跳转会登陆页
router.all('*', function *(next) {
console.log(this.request.url);
var _parse = path.parse(this.request.url);
var _dir = _parse.dir.substr(1);
var _sep = _dir.split(path.sep);
if(_sep == "m"){
var n = this.session.mlogin || 0;
if(n == 0){
this.redirect("/login");
this.status = 301;
return;
}else if(this.session.mlogin != 'e3f08c66bc9'){
this.session.mlogin = null;
this.redirect("/login");
this.status = 301;
return;
}
}
yield next;
});
//获取登录页面
router.get('/login', function *(next) {
yield this.render('mma/login');
});
//提交登录表单
router.post('/login', function *(next) {
if(this.request.body.u!='admin'){
this.redirect("/login");
this.status = 301;
return;
}
if(this.request.body.p!='123456'){
this.redirect("/login");
this.status = 301;
return;
}
//验证正确,写入session,跳转管理首页
this.session.mlogin = "e3f08c66bc9";
this.redirect("/admin/index");
this.status = 301;
});
\n
5 回复
把server.use(bodyParser())
挪到server.use(session({
上面去
@SinalVee 好,我试试看。😊
我又回来了。这个问题我本以为解决了,但今天又出现了……看来并不是代码位置的关系。。。
实际情况是这样……我都要哭了
这个问题最后解决了吗?我也遇到这个问题啦 ,求指导。