[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。
相关文章
相关标签/搜索