Express 互动版

访问控制

修改好了模板页,下面开始修改启动文件app.js的内容。

1.安装模块express-session并引用,安装、引用不在讲述。

2.使用新模块进行访问时间限制,如下:

var session = require('express-session');
...
app.use(session({
    secret:'secret',
    resave:true,
    saveUninitialized:false,
    cookie:{
        maxAge:1000*60*10  //过期时间设置(单位毫秒)
    }
}));

3.app.js文件新增中间件并设置模板变量值,如下:

app.use(function(req, res, next){
    res.locals.user = req.session.user;
    var err = req.session.error;
    res.locals.message = '';
    if (err) res.locals.message = '<div style="margin-bottom: 20px;color:red;">' + err + '</div>';
    next();
});

res.locals对象保存在一次请求范围内的响应体中的本地变量值。

PS:注意,中间件的放置顺序很重要,等同于执行顺序。而且,中间件必须放在HTTP动词方法之前,否则不会执行。

4.增加logout路径处理(用户登陆退出)和index路径请求处理,如下:

app.get('/logout', function(req, res){
    req.session.user = null;
    req.session.error = null;
    res.redirect('index');
});
app.get('/index', function(req, res) {
    res.render('index');
});

5.修改home路径请求处理,如下:

app.get('/home',function(req,res){
    if(req.session.user){
        res.render('home');
    }else{
        req.session.error = "请先登录"
        res.redirect('login');
    }
});

5.修改路径为login的Post请求

app.post('/login',function(req,res){
    var user={
        username:'admin',
        password:'admin'
    }
 if(req.body.username==user.username&&req.body.password==user.password){
        req.session.user = user;
        res.send(200);
    }else{
        req.session.error = "用户名或密码不正确";
        res.send( 404 );
    }
});

好,全部修改完毕,再次访问测试地址试试效果吧!