使用node模块:
parseurl :解析与记忆化的URL
express-session:会话的数据存储服务器端,
中间件是什么?
- 就像流水线一样。
- 第一个人把鸡蛋扔到传送带上。
- next第二个人把鸡蛋煮熟。
- next第三个人把把鸡蛋壳打碎。
- next第四个人把蛋壳剥掉。
next第五个人吃鸡蛋。
中间件是对多个步骤的封装
把2 3 4封装成中间件。
就变成了第一个人把鸡蛋扔到传送带上。
next 加工中间件处理鸡蛋。
next 吃鸡蛋。(引用知乎用户)
用户访问:http://hemaj.com/
node 登录拦截跳转代码
var parseurl = require('parseurl')
var session = require('express-session')
//设置session配置
app.use(session({
resave: false, //重新保存
saveUninitialized: true, //
secret: 'keyboard cat',//通过设置的 secret 字符串,来计算 hash 值并放在 cookie 中,使产生的 signedCookie 防篡改。
cookie:{ maxAge: 1000*60*60*24}//失效时间
}));
app.use(function (req, res, next) {
var token = req.session.token;
var pathname = parseurl(req).pathname;
//判断是否登录入
if(!token){
//未登录清空token输出给模板值
token = req.session.token = null;
res.locals.user=null;
app.locals.user=null;
///member和admin的路径登录后才能进入
if(/^\/member/g.test(pathname)||/^\/admin/g.test(pathname)){
//跳出
return res.redirect('/login');
}else{
next();
}
}else if(token){
//已登录
//输出值到模板,res.locals,不前页面输出,app.locals是模板全局出输
res.locals.user=JSON.parse(token);
app.locals.user=JSON.parse(token);
next();
});
}
})
parseur的apl地址:https://www.npmjs.com /package/parseurl
express-session的api地址:https://www.npmjs.com/package/express-session
Node.js 技术交流: 293851491