1.为什么使用session? 
session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。 
当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。 
session可以和redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失。 
2。session的工作流程: 
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对, 然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),找到对应的session(value)。 客户的信息都保存在session中。 
3 express-session的常用参数: 
secret:一个String类型的字符串,作为服务器端生成session的签名。 
name:返回客户端的key的名称,默认为connect.sid,也可以自己设置。 
resave:(是否允许)当客户端并行发送多个请求时,其中一个请求在另一个请求结束时对session进行修改覆盖并保存。

默认为true。但是(后续版本)有可能默认失效,所以最好手动添加。

saveUninitialized:初始化session时是否保存到存储。默认为true, 但是(后续版本)有可能默认失效,所以最好手动添加。

cookie:设置返回到前端key的属性,默认值为{ path: ‘/’, httpOnly: true, secure: false, maxAge: null }。

express-session的一些方法:

Session.destroy():删除session,当检测到客户端关闭时调用。

Session.reload():当session有修改时,刷新session。

Session.regenerate():将已有session初始化。

Session.save():保存session。

3.示例demo

//app.js中添加如下代码(已有的不用添加)
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session'); app.use(cookieParser('sessiontest'));
app.use(session({
secret: 'sessiontest',//与cookieParser中的一致
resave: true,
saveUninitialized:true
}));
//修改router/index.js,第一次请求时我们保存一条用户信息。
router.get('/', function(req, res, next) {
var user={
name:"Miao-xy",
age:"",
address:"bj"
}
req.session.user=user;
res.render('index', {
title: 'the test for nodejs session' ,
name:'sessiontest'
});
});
//修改router/users.js,判断用户是否登陆。
router.get('/', function(req, res, next) {
if(req.session.user){
var user=req.session.user;
var name=user.name;
res.send('你好'+name+',欢迎来到我的家园。');
}else{
res.send('你还没有登录,先登录下再试试!');
}
});

最新文章

  1. AMD and CMD
  2. virtualbox下面安装ubuntu后外网如何远程ssh访问
  3. 简单的使用ehcache
  4. noip模拟赛(一)密码
  5. Linux之通配符与转义字符
  6. spark connect to Cassandra problem
  7. xcode本地运行H5游戏可以吗?
  8. 基于live555的视频直播 DM368IPNC RTSP分析
  9. GB和GBDT 算法流程及分析
  10. 使用SSH框架查出的实体集合用AJAX形式刷新到页面JOSONArray报异常
  11. python 标准库 -- threading
  12. DFS和BFS(无向图)Java实现
  13. 20155324 《Java程序设计》实验三 敏捷开发与XP实践
  14. Java代码质量监控工具Sonar安装
  15. 抽象语法树(AST)
  16. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(六)一定要RESTful吗?
  17. 《蹭课神器》Alpha版使用说明
  18. mvc小技巧
  19. [转]ESP8266使用详解
  20. 015-awk

热门文章

  1. javascript反混淆之packed混淆
  2. 【bzoj3223】文艺平衡树
  3. 封装构造函数,用canvas写饼状图和柱状图
  4. mysql innodb 数据表不存在
  5. Mybatis学习 PageHelper分页插件
  6. C#面向对象(OOP)入门—第一天—多态和继承(方法重载)
  7. SRM 563 Div1 500 SpellCards
  8. Git 分支 - 分支的新建
  9. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记5——Direct3D中的顶点缓存和索引缓存
  10. hdu 1026(优先队列+路径输出)