express的中间件基于connect模块而来,所以相关文档可以直接参考
http://www.senchalabs.org/connect/
使用cookie-session中间件过程中,比较困惑,所以记录如下
cookieSession之前需要使用cookieParser中间件
var express =require('express'); var app = express(); app.use(express.cookieParser('S3CRE7')); app.use(express.cookieSession());
中间件传递参数如下:
key
: cookie键,感觉类似于PHP的session_id;secret
: 加密cookie值的字符串,与cookieParser中的secret
功能完全相同,如果cookieParser没有传入secret
参数,此处必须传入。个人角度为了主观上的感觉,采用了两个不同的值。cookie
: 设置cookie的相关参数,即除KV对之外的expire/maxAge,httpOnly,path值proxy
: 是否信任反向代理,默认false解析之后通过
req.session
访问值req.session.name = 'jason'
res.send('')
即设置了session的一个KV对,此处比较让我困惑。鄙人一直认为中间件执行是单向的,只负责向后面应用层解析挂载数据,而设置session则反之。经google查询,原因是connect中间件通过patch向http.ServerResponse
添加了一个header event
用于更新cookie:res.on('header', function(){ res.setHeader('Set-Cookie', cookie.serialize(key, '')); }
模拟一个登陆验证
function loginCheck(req,res,next){ if(req.session.name){ next(); }else{ res.send({"info":"unlogin"}) } }
大概使用就是这样,这种是使用cookie来保存session值,NODEjs的内存保存
session
,redis
,memcache
的使用方案稍后放出