EXPRESS 4.x 以上使用session和cookie 的记录

Posted Eaysun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXPRESS 4.x 以上使用session和cookie 的记录相关的知识,希望对你有一定的参考价值。

关于session 和cookie 我搞了2-3天, 发现这个玩意也挺麻烦的. 很多教程都是把这种会话保存在nosql里面,比如mongo,或者redis等等.但是我还是想直接保存在计算机的内存中,比较符合传统的方式.网上也有很多这方面的文章,但基本上都是你抄我的,我抄你的,而且express有很多这种session/cookie的中间件,总是让人弄迷糊.很多文章都是点到为止,完全要靠自己慢慢去试,去看文档,去摸索.

我是基于connect这个中间件实现的.这个middleware 功能非常强大

有兴趣的同学可以参考: http://blog.fens.me/nodejs-connect/       

安装在这里就不说了. 下面我们就来实现一下,希望对大家有用

导入模块在app.js里

1 var connect = require(\'connect\');

 

在路由分发语句前加入。

1 app.use(bodyParser.json());
2 app.use(bodyParser.urlencoded());
3 app.use(cookieParser());
4 app.use(connect.session({ secret: \'lgphp\', key: \'lgphp\' ,cookie: { maxAge: 20000}}));  //session 时长为20秒,这个是以毫秒为单位,这样我们就建立一个session的会话,这是一个全局的设置
5 routes(app);

 

先说session ,设置session 的KV

 req.session.sessname = \'i am a sesion\';

这样我们就设置了一个名为sessname的session变量,值就是iam a sesion,这个session的会话时长是20秒。ubuntu上打字还是不太灵活

 

获取session

 

res.send(\'session:\' + req.session.sessname)

 

删除session 

   req.session.destroy();

 

 

判断session是否存在

 

if (req.session){   //判断session是否被销毁

 

以上session操作足够完成常用的逻辑啦

 

下面说cookie,我们也经常用到的。

设置cookie

1   res.cookie(\'cookiename\',\'i am a cookie\',{ maxAge: 20000,httpOnly:true, path:\'/\'});//cooike 时长 30 sec

 

获取cookies的值

var c = req.cookies.cookiename   //这是个字典对象,你可以用括号的方式获得

 

删除cookie,网上很多,但是好像都没用,有的是把过期时间设置为0,我试了,cookie的值没有了,但是cookie还在,用chrome查看还有的。

   res.cookie(\'cookiename\',\'null\',{maxAge:0});

这样删除就没问题了。

 

 

判断cookie是否存在,比如做登录和权限验证什么的。cookie失效后,变成了undefined,所以我们这样判断

 if (\'undefined\' === (typeof req.cookies.cookiename)){
             res.send(\'deleted cookie\');
         }

 

原文:http://www.cnblogs.com/lgphp/p/3913077.html?utm_source=tuicool&utm_medium=referral

 

以上是关于EXPRESS 4.x 以上使用session和cookie 的记录的主要内容,如果未能解决你的问题,请参考以下文章

使用 Passport.js、express-session 和 express-mysql-session 进行用户身份验证

使用 express-session 和 JWT

express-session 和 cookie-session 有啥区别?

在 express-ws 应用程序和打字稿中使用 Sessions

express session 和 socketio session关联

express 4 使用session和cookies