以前的方法有点质量差,现在换版本了
首先在app.js页面里面引入
var cookieParser = require('cookie-parser');
然后在下面加入
//验证
app.use(function(req, res, next) {
//console.log(req.cookies);
if (!req.cookies.username) {
if (req.url == "/login" || req.url == "/loginCheck") {
next(); //如果请求的地址是登录则通过,进行下一个请求
} else {
res.redirect('/login');
};
} else if (req.cookies.username) {
next();
};
});
这里是验证cookie里面是否有用户姓名,如果没有将跳转登录login页面
路由页面
router.get('/login', function(req, res, next) {
res.render('login.ejs',{});
});
router.post('/loginCheck',function(req,res,next){
res.cookie('username', req.body.username, { expires: new Date(Date.now() + 900000), httpOnly: true });
res.redirect("/backview");
});
res.cookie(name, value [, options]);
属性设置
name: 类型为String
value: 类型为String和Object,如果是Object会在cookie.serialize()之前自动调用JSON.stringify对其进行处理
Option: 类型为对象,可使用的属性如下
domain:cookie在什么域名下有效,类型为String,。默认为网站域名
expires: cookie过期时间,类型为Date。如果没有设置或者设置为0,那么该cookie只在这个这个session有效,即关闭浏览器后,这个cookie会被浏览器删除。
httpOnly: 只能被web server访问,类型Boolean。
maxAge: 实现expires的功能,设置cookie过期的时间,类型为String,指明从现在开始,多少毫秒以后,cookie到期。
path: cookie在什么路径下有效,默认为'/',类型为String
secure:只能被HTTPS使用,类型Boolean,默认为false
signed:使用签名,类型Boolean,默认为false。`express会使用req.secret来完成签名,需要cookie-parser配合使用`
res.clearCookie(name [, options]);