假如你是使用过或学习过PHP,你一定觉得很简单。session只不过是$_SESSION就可以搞得,这还不简单只是对一个key-value就能工作了。我觉得可以大多数的phper都是这样的,这是语言本身就赋予的。还学习个毛啊,我只要知道它是存数据,并且是服务端的就可以了。

 
我们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。

[session篇]看源码学习session(一)的更多相关文章

  1. JDK源码学习系列03----StringBuffer+StringBuilder

                         JDK源码学习系列03----StringBuffer+StringBuilder 由于前面学习了StringBuffer和StringBuilder的父类A ...

  2. 从源码学习Java并发的锁是怎么维护内部线程队列的

    从源码学习Java并发的锁是怎么维护内部线程队列的 在上一篇文章中,凯哥对同步组件基础框架- AbstractQueuedSynchronizer(AQS)做了大概的介绍.我们知道AQS能够通过内置的 ...

  3. Shiro源码解析-Session篇

    上一篇Shiro源码解析-登录篇中提到了在登录验证成功后有对session的处理,但未详细分析,本文对此部分源码详细分析下. 1. 分析切入点:DefaultSecurityManger的login方 ...

  4. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  5. 基于Redis缓存的Session共享(附源码)

    基于Redis缓存的Session共享(附源码) 在上一篇文章中我们研究了Redis的安装及一些基本的缓存操作,今天我们就利用Redis缓存实现一个Session共享,基于.NET平台的Seesion ...

  6. JDK源码学习--String篇(二) 关于String采用final修饰的思考

    JDK源码学习String篇中,有一处错误,String类用final[不能被改变的]修饰,而我却写成静态的,感谢CTO-淼淼的指正. 风一样的码农提出的String为何采用final的设计,阅读JD ...

  7. Tomcat源码分析——Session管理分析(下)

    前言 在<TOMCAT源码分析——SESSION管理分析(上)>一文中我介绍了Session.Session管理器,还以StandardManager为例介绍了Session管理器的初始化 ...

  8. 源码学习系列之SpringBoot自动配置(篇一)

    源码学习系列之SpringBoot自动配置源码学习(篇一) ok,本博客尝试跟一下Springboot的自动配置源码,做一下笔记记录,自动配置是Springboot的一个很关键的特性,也容易被忽略的属 ...

  9. .NET Core 2.1 源码学习:看 SocketsHttpHandler 如何在异步方法中连接 Socket

    在 .NET Core 2.1 中,System.Net.Sockets 的性能有了很大的提升,最好的证明是 Kestrel 与 HttpClient 都改为使用 System.Net.Sockets ...

随机推荐

  1. 动态include是通过servlet进行页面信息交互的

    动态include是通过servlet进行页面信息交互的

  2. 【bzoj2588】Spoj 10628. Count on a tree 离散化+主席树

    题目描述 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始为0,即第一个 ...

  3. Django 2.0 学习(07):Django 视图(进阶-续)

    接Django 2.0 学习(06):Django 视图(进阶),我们将聚焦在使用简单的表单进行处理和精简代码. 编写简单表单 我们将用下面的代码,来替换之前的detail模板("polls ...

  4. 编译 python 生成静态库 libpython2.7.so

    由于我们是C++作驱动的Python开发,驱动需要加上Python静态库libpython2.7.so.libpython2.7.so.1.0.libpython2.7.a.此处我想在python源码 ...

  5. [SDOI2014]数表 莫比乌斯反演

    ---题面--- 题解: 设$f(d)$表示数$d$的约数和,那么$(i, j)$中的数为$f(gcd(i, j))$,那么有2种枚举方法.1,枚举每一格看对应的$f(d)$是几.$$ans = \s ...

  6. [USACO06NOV]玉米田Corn Fields 状压DP

    题面: 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地.John打算在牧场上的某几格里种上美味的草,供他的 ...

  7. 简单谈谈Docker镜像的使用方法_docker

    在上篇文章(在Docker中搭建Nginx服务器)中,我们已经介绍了如何快速地搭建一个实用的Nginx服务器.这次我们将围绕Docker镜像(Docker Image),介绍其使用方法.包括三部分: ...

  8. C++STL简介

    本文仅仅是个人学习的过程中结合网上博文,对STL的整理,也仅仅是简介.仅为个人学习笔记. 一.STL简介(摘自:晨光(Morning)) STL(Standard Template Library), ...

  9. BZOJ2659 [Beijing wc2012]算不出的算式 【数形结合】

    题目链接 BZOJ2659 题解 真没想到,, 观察式子 \[\sum\limits_{k = 1}^{\frac{p - 1}{2}} \lfloor \frac{kq}{p} \rfloor\] ...

  10. CodeForces.158A Next Round (水模拟)

    CodeForces.158A Next Round (水模拟) 题意分析 校赛水题的英文版,坑点就是要求为正数. 代码总览 #include <iostream> #include &l ...