EXPRESS 4.x 以上使用session和cookie 的記錄

關於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

相關文章
相關標籤/搜索