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

在有登录的项目中,需要配置拦截器器,以防止别人在未登录的状态想去操作你的系统,在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写的。

你可能感兴趣的:(node.js)