[session篇]看源碼學習session(一)

假如你是使用過或學習過PHP,你必定以爲很簡單。session只不過是$_SESSION就能夠搞得,這還不簡單只是對一個key-value就能工做了。我以爲能夠大多數的phper都是這樣的,這是語言自己就賦予的。還學習個毛啊,我只要知道它是存數據,而且是服務端的就能夠了。php

 
咱們noder則要坎坷一些,noder大部分自來於Front-end。session比較少會使用,若是咱們也只是求個使用。也能夠看看API就足夠了,何須勉強本身。
 
凡事都應該從簡單的入手,咱們先來說講使用方法。自express4來,session從框架分離出來,因此它的名字如今叫express-session。(若是隻是單純作一個session,只不過是一個記錄sessionID的對象)
 
app.use(session({secret: 'helloworld'}));
 
而後還要加上body-parser,這時phper又不懂了。這還要本身加呀,真是沒用。沒錯,node的設計就是模塊化,加上這個才能解析json和請求體。有了這些東西,就能夠當一個普通對象使用了,像這樣:
 
app.get('/',function(req,res){

       var session=req.session;
       session.user = { id:1, name:"hello"}
})
 
更多方法能夠到它的github主頁上了解,好了。咱們能夠來看看這個session的源碼,打開https://github.com/expressjs/session/blob/master/index.js。看了一下依賴,前面幾個都是cookie相關, 有一個叫crc的東西。這是一個完整性的驗證算法,後面有時間再去學習。依賴的前半部分都是cookie相關,後面纔是真正的session部分。
 
var cookie = require('cookie');  // 一個cookie的序列和反序列庫
var crc = require('crc').crc32;  // 完整驗證算法
var debug = require('debug')('express-session'); // debug這個插件
var deprecate = require('depd')('express-session'); // 未知
var parseUrl = require('parseurl'); // 轉化url
var uid = require('uid-safe').sync // 獲得一個uid
  , onHeaders = require('on-headers') // 寫heasers的
  , signature = require('cookie-signature') // cookie簽名
/*---------------------Session----------------------*/
var Session = require('./session/session')
  , MemoryStore = require('./session/memory')
  , Cookie = require('./session/cookie')
  , Store = require('./session/store')

 


 
看來咱們先研究cookie是對的,session是依賴它的。在session這一部分,有4個文件。從名字上來看,分3個功能。一個是把session存內存,一個是跟cookie相關,一個是把session存數據庫。下面咱們來驗證吧,come on。
相關文章
相關標籤/搜索