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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM