nodejs和express折腾了很久,也做了各种demo。其中最关键的当然是各种中间件了。安装npm方便快捷。但是真正做一个网站,登录和注册是一定要避免的,也就是cookie,session,中间件是cookie-parser,express-sessioncookie-parsercookie-parser是用expressgenerator建项目时自动安装的,其作用是设置、获取和删除cookies。快速会话取决于它。1.引入varcookieParser=require('cookie-parser');#引入模块app.use(cookieParser());#Mount中间件,可以理解为实例化这两行代码,默认写在app.js中,也就是说cookie现在可以直接使用了。2.创建cookieres.cookie(name,value[,options]);name为cookie名称,value为cookie值,可以是json对象,也可以是字符串。options是一个选项,详情请看这里,常用选项有:{'maxAge':90000,#有效时长,即90000毫秒后过期,String'signed':false#默认为false,表示是否签名,Boolean}Createcookie会在http响应头中添加Set-Cookie,用于在浏览器中设置cookie3.获取cookievarcookies=req.cookies#获取cookie集合varvalue=req.cookies.key#获取cookie的值namedkey4.删除cookieres.clearCookie(name[,options])name是cookie的名字,options和创建cookie时传入的一样。5.签名上面写的cookie的各种操作都是没有签名的。签名可以提高安全性。下面是使用签名生成cookies的方法,类似,修改上面即可。.cookie(name,value,{'signed':true});varcookies=req.signedCookies#获取cookie集合varvalue=req.signedCookies.key#获取名为key的cookie的值提示:使用签名时,这三个必须一起修改,只修改一个无效!6.栗子//设置cookie名称为user,值为对象,90000ms过期,无签名res.cookie('user',{id:1,name:'ruidoc'},{maxAge:900000});//GetSetcookievaruser=req.cookies.user//设置cookie名称为admin,值为对象,无过期时间,有签名res.cookie('admin',{'id':1},{'signed':true});//获取设置的cookievaradmin=req.signedCookies.adminoptions如果不设置过期时间,默认关闭浏览器,即express-session过期清除。express-session是真正在server端保存数据的中间件,需要独立安装npminstallexpress-session--save在app.js中引入,app.use(cookieParser())var后挂载session=require('express-session');app.use(session([options]));另外说说几个常用的选项{'secret':'ruidoc',#Signature,与上面cookie设置的签名字符串一致,'cookie':{'maxAge':90000},'name':'session_id'#在浏览器中生成cookie的name键,默认是connect.sid}因为创建session的同时会创建一个cookie来保存sessionId,所以options中的cookie.maxAge可以看作是session的有效时长1.创建session#创建一个sessionreq.session.key=value#创建多个sessionreq.session={key1:value1,key2:value2}2.获取sessionvarsession=req.session#获取sessionsetvarvalue=req.session.key#获取名为key的session的value3.Destroysessionreq.session.destroy()#清除所有sessionreq.session.key.destroy()#销毁value名为key的session的操作简单,到此为止
