node 登录拦截跳转,中间件使用和理解

使用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

案例:http://hemaj.com

Node.js 技术交流: 293851491

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值