中间件:express-session

本文介绍了express-session中间件,详细阐述了session的工作原理,包括它如何在服务器端存储客户状态,以及在登录持久化中的应用。内容涵盖session的安装、API使用及配置示例,强调了session默认存储在内存中并建议实现持久化存储。
摘要由CSDN通过智能技术生成

express-session

github仓库

session 介绍:

  • session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。

  • Session的用途:

    • session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存。
      当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截。
      session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)
      丢失。

session 的工作流程

  • 当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于
    key,value的键值对,然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),
    找到对应的session(value)。 客户的信息都保存在session中

安装

  • $ npm install express-session

API

  • var session = require(‘express-session’)

配置

app.use(session({
    secret: 'my key',//配置加密字符串,他会在原有加密基础上凭据上自己定义的字符串加密信息,防止客户端恶意伪造
    resave: false,
    saveUninitialized: true//强制将为初始化的session 储存,无论是否使用session 都默认分配一个秘钥
  }))

session 配置图

使用

  • 官方案例
var express = require('express')
var parseurl = require('parseurl')
var session = require('express-session')

var app = express()

app.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true
}))

app.use(function (req, res, next) {
  if (!req.session.views) {
    req.session.views = {}
  }

  // get the url pathname
  var pathname = parseurl(req).pathname

  // count the views
  req.session.views[pathname] = (req.session.views[pathname] || 0) + 1

  next()
})

app.get('/foo', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views['/foo'] + ' times')
})

app.get('/bar', function (req, res, next) {
  res.send('you viewed this page ' + req.session.views['/bar'] + ' times')
})
  • 简单调用
req.session.foo = 'bar' //添加

req.session.foo //获取

ps: 默认session 是存储在内存中的,需要进行持久化存储,到数据库中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值