Session后台存储

Session是什么 
session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而session保存在服务器上。 
客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。 
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么session机制就是通过检查服务器上的“客户明细表”来确认客户身份。 
session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。

为什么不使用cookie

    cookie会保存在客户端,也就是说,如果将登录的一些重要信息,比如密码之内的保存在用户自己那里,这显然是很不安全,很不靠谱的。
    所以,我们使用session,将用户的登录信息保存在服务端或者数据库中,就相对安全靠谱多了。

下面为大家详细演示一下如何使用session

1.首先需要在项目的app.js中配置session信息,并且想要使用session需要安装两个node的插件: 
这里写图片描述

安装完插件以后,配置基本信息:

这里写图片描述

name:在response中sessionID这个cookie的名称。也可以通过这个name读取,默认是connect.sid。如果一台机器上有多个app运行在同样的hostname+port, 那么你需要对这个sessin的cookie进行切割,所以最好的方法还是通过name设置不同的值。

cookie:也就是session ID的cookie,默认是{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }.

resave:强制session保存到session store中。即使在请求中这个session没有被修改。但是这个并不一定是必须的,如果客户端有两个并行的请求到你的客户端,一个请求对session的修改可能被另外一个请求覆盖掉,即使第二个请求并没有修改sesion。默认是true,但是默认值已经过时,因此以后default可能会被修改。因此好好研究你的需求选择一个最适用的。大多数情况下你可能需要false 最好的知道你的store是否需要设置resave的方法是通过查看你的store是否实现了touch方法(删除那些空闲的session。同时这个方法也会通知session store指定的session是活动态的),如果实现了那么你可以用resave:false,如果没有实现touch方法,同时你的store对保存的session设置了一个过期的时间,那么建议你用resave:true。

saveUninitialized:强制没有“初始化”的session保存到storage中,没有初始化的session指的是:刚被创建没有被修改,如果是要实现登陆的session那么最好设置为false(reducing server storage usage, or complying with laws that require permission before setting a cookie) 而且设置为false还有一个好处,当客户端没有session的情况下并行发送多个请求时。默认是true,但是不建议使用默认值。

其他参数详情请参考:

http://blog.csdn.net/liangklfang/article/details/50998959

2.配置完session后,我们就可以在登录接口里将登录信息保存进session,这里需要根据自己的数据结构自己定义session。

这里写图片描述

3.最后我们取出session中的数据,渲染到我们的页面就完成了一个完整的登录过程啦!

这里写图片描述

下面演示一下我做的demo:

登录页面:

这里写图片描述

跳转到用户页面:

这里写图片描述

阅读更多
换一批

没有更多推荐了,返回首页