登录状态的保存Session
Session是什么
Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间。从不同的层面看待session,它有着类似但不全然相同的含义。比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录、并完成购物直到关闭浏览器,这是一个会话。而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做session。因此在谈论session的时候要注意上下文环境。而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保持状态,也可以称作保持会话。
登录状态的保存可以使用客户端存储如cookie
但是安全性不高,并且cookie容易伪造
session(会话)保存登录状态相对安全,
例:
session相当于一个超市物品存放柜,当你放一个东西之后会给你随机一个纸条,并且是唯一的,你要来取东西,就需要拿纸条来确定你的身份,在这里纸条就相当于cookie,
在node中使用中间件express-session这是专门针对于express的一个中间件
第一步:中间件安装
npm install express-session
第二步:引入
var express = require('express')
var session = require (' express-session ')
第三步:配置
//配置session中间件要在挂载路由之前
var express = require('express')
var session = require('express-session')
app.use(session({
secret: 'keyboard cat', //配置加密字符串,它会在原有的加密基础上和这个字符串拼起来去加密,目的就是增加安全性,防止客户端恶意伪造session
name: 'cookie_name', //cookie的名称 也是cookie的key
cookie: {maxAge: 80000 }, //设置maxAge是80000ms,即80s后session和相应的cookie失效过期
resave: false,
saveUninitialized: true //true 不管你是否使用session存数据 ,都默认分配给客户端一个session
}))
第四步:使用
//当我们把这个插件配置好之后,我们就可以通过req.session来访问和设置session成员了;
//req.session是一个对象
//添加session数据: key:foo 值:hello word
req.session.foo='hello word';
//访问session数据:
req.session.foo;
清除服务端保存的session;
req.session.destory();//表示销毁session