zoukankan      html  css  js  c++  java
  • [session篇]看源码学习session(一)

    假如你是使用过或学习过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。
  • 相关阅读:
    quart源码阅读(一)
    Python poll IO多路复用
    Python select IO多路复用
    谁才是真正的垃圾:判断对象的可触及性
    Java的四种引用之强弱软虚
    JVM的基本结构及其各部分详解(二)
    JVM的基本结构及其各部分详解(一)
    java面试笔试题收集
    看懂Class文件的装载流程
    java单例模式
  • 原文地址:https://www.cnblogs.com/coolicer/p/4223148.html
Copyright © 2011-2022 走看看