在node.js开发中使用express-session来进行拦截
在未登录成功的情况下,进入主页或其他页面来进行重新定向到登录页面
代码如下:
//引入
var express=require('express');
var mysql=require('mysql');
var bodyParser=require('body-parser');
var favicon=require('serve-favicon');
var path=require('path');
var morgan = require('morgan');
var userListRouter=require('./router/userList');
var ejs=require('ejs');
server.use(express.static('./http')); //选择地址
//创建服务
var app=express();
//拦截模块
server.use(session({
secret: 'root', //密钥
resave: true, //重新保存,当再有请求过来的时候,会覆盖之前的session
rolling: true,
saveUninitialized: true, //初始化session是否保存
cookie: {
maxAge: 10000 //过期时间 毫秒
}
}));
server.all('*', function (req, res, next) {
console.log(req.session);
if (req.session.user) {
next();
} else {
if (req.url == '/pages/login.html' || req.headers.referer == 'http://localhost/pages/login.html') {
next();
} else {
res.redirect('http://localhost:/pages/login.html');
}
}
});
如果像以上这种方式是不会从新定向的
会直接返回登录页面的结构,达不到重新定向跳转页面的目的,在多次实验以后发现问题在于
server.use(express.static('./http')); //选择地址
这个必须写在拦截模块的后面,才能达到重新定向 页面的效果