Node.js+Express配置拦截器实现登录拦截

本文介绍了如何在Node.js使用Express框架配置登录拦截器。通过设置session有效期,并利用中间件实现对未登录用户的操作拦截。详细步骤和用法可参阅作者的网站www.wb233.cn的相关文章。

在有登录的项目中,需要配置拦截器器,以防止别人在未登录的状态想去操作你的系统,在node.js中中间件Express其实就是一个拦截器,通过配置可以实现登录拦截。

一、设置session:在app.js中引入session模块:

var session = require('express-session');

然后设置session的有效期:

app.use(cookieParser('xxx'));
app.use(session({
    secret: 'xxx',
    resave: true,
    saveUninitialized: true,
    cookie: {
        maxAge: 1000 * 60 * 60 * 24   //有效期一天

    }
}));

上面的‘secret’可以自己定义,他是用来和cookie解密用的,好像就想一把钥匙一样,当然cookie也需要和这个一样,我的理解是这样的,不知道对不对。

二、配置登录拦截:

/**
 * 设置中间件,监控在该拦截器后面的所有请求
 * || arr[1] === 'stylesheets' || arr[1] === 'javascripts' || arr[1] === 'images' || arr[1] === 'upload'
 * 将公共目录的文件放在拦截器之前,防止拦截public中的文件,以至于无法加载白名单中的public中的文件,js、css、image
 */

/**
 * 拦截器
 */
app.use(function (req, res, next) {
    var logger = log4js.getLogger("intercept");
    if (req.session.user) {
        //用户登录过
        next();
    } else {
        //解析用户请求路径
        var arr = req.url.split('/');
        logger.info('请求路径拆分:' + JSON.stringify(arr));
        //去除get请求携带的参数
        for (var i = 0; i < arr.length; i++) {
            arr[i] = arr[i].split('?')[0];
        }

        if (arr.length > 1) {
            if (arr[1] === 'adminlogin' || arr[1] === 'adminlogout' || arr[1] === 'login_commit'||arr[1] === 'video') {
                next();
            } else {
                logger.error('intercept:用户未登录执行登录拦截,路径为:' + arr[1]);
                res.redirect('/adminlogin');  // 将用户重定向到登录页面
                res.end();
            }
        }
    }


});

具体的详细用法可以去我的网站www.wb233.cn 里面的这篇文章有详细用法,这个网站是用Node.js+Express写的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值