關於session 和cookie 我搞了2-3天, 發現這個玩意也挺麻煩的. 不少教程都是把這種會話保存在nosql裏面,好比mongo,或者redis等等.可是我仍是想直接保存在計算機的內存中,比較符合傳統的方式.網上也有不少這方面的文章,但基本上都是你抄個人,我抄你的,並且express有不少這種session/cookie的中間件,老是讓人弄迷糊.不少文章都是點到爲止,徹底要靠本身慢慢去試,去看文檔,去摸索.php
我是基於connect這個中間件實現的.這個middleware 功能很是強大html
有興趣的同窗能夠參考: http://blog.fens.me/nodejs-connect/ node
安裝在這裏就不說了. 下面咱們就來實現一下,但願對你們有用redis
導入模塊在app.js裏sql
1 var connect = require('connect');
在路由分發語句前加入。chrome
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 的KVexpress
req.session.sessname = 'i am a sesion';
這樣咱們就設置了一個名爲sessname的session變量,值就是iam a sesion,這個session的會話時長是20秒。ubuntu上打字仍是不太靈活json
獲取sessionubuntu
res.send('session:' + req.session.sessname)
刪除session cookie
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