nodeJS学习之旅-----session的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lihuijuan_1/article/details/80394762

一,简介

    session是另一种记录客户状态的机制,cookie保存在客户端,session保存在服务器

    session运行在服务器,客户端第一次访问服务器时,就可以将客户的登录信息保存。

     当客户访问其他界面时,可以判断客户的登录状态,做出提示,相当于登录拦截。

session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉可不会导致信息丢失(购物车)

   当重新打开浏览器信息不保存

二,工作流程

       当浏览器向服务器发送请求时,会在服务器建立一个session对象,相当于一个key,value的键值对,然后将key(cookie)f返回到客户端,当浏览器再次访问时,携带key(cookie)找到对应的session(value),客户的信息都存在session中。

       用来实现sessionb,设置sessionid标识的方式一般有2种,URL重写和cookie

       URL重写:“;sessionid=xxx”再次请求这个url的时候,jsessionid会被传到服务器

      cookie:在服务器response返回的时候,会把sessionid放在http头部放在cookie属性里传到客户端

                  再次访问服务器的时候,sessionid会随着cookie一起请求

三,express-session的使用

    (1)安装 npm i session 

    (2)引入var session=require("express-session")

    (3)设置中间件

            

    app.use(session({
        secret:'this is a string key',//加密的字符串,里面内容可以随便写
        resave:false,//强制保存session,即使它没变化
        saveUninitialized:true //强制将未初始化的session存储,默认为true
    }))

    (4)使用

            设置值 req.session.username=“lhj”

            获取值 req.session.username

五,express-session的常用方法

六,负载均衡配置session,把session保存到数据库里面

(负载均衡:假如北京的一台计算机访问北京的一台服务器,处于登录状态时,又去访问北京的另一台服务器,为了不让数据丢失,就把session保存到数据库,用户的key(session的id)是一样的)

    (1)安装 npm i connect-mongo/express-session

    (2)引入 var session=require("expression-session")

                var  MongoStore=require("connect-mongo")(session)

     (3)配置中间件

            

app.use(session({
    secret:'this is a string key',//加密的字符串,里面内容可以随便写
    resave:false,//强制保存session,即使它没变化
    saveUninitialized:true //强制将未初始化的session存储,默认为true
    store:new MongoStore({
        url:'mongodb://127.0.0.1:27017/orderShop',
        touchAfter:24*3600
    })
}))
七,cookie和session 的区别

     ps:cookie相当于通行证,session相当于身份明细表    

   (1)cookie数据存放在客户的浏览器上,session数据放在服务器上

    (2)cookie不是很安全

    (3)session会在一定时间内保存在服务器上,当访问增多时,会比较占用服务器的性能

    (4)单个cookie保存的数据不能超过4k,浏览器限制一个站点最多保存20个cookie

------------------------------未完待续---------------------------------------------------

    

猜你喜欢

转载自blog.csdn.net/lihuijuan_1/article/details/80394762