nodejs03中间件 -1cookie-session

cookie-session

    用户和服务器交互通过什么?   http协议,http是无状态的
        通过IP(公司环境)
        通过浏览器保存一些信息,每次访问服务器带过去
            如何保存信息给浏览器:
                1. 前端种cookie/localstorage
                2. 后端种: 前端请求后端,后端给前端种cookie(加了密)的同时,在服务器上生成seesion
        服务器给浏览器种只种cookie:  cookie-parser
        服务器给浏览器种cookie的同时在服务器上生成seesion:  cookie-session

安装+引入
    种:  req.session.key=value  
    读: req.session.key
    删:  delete req.seesion.key | req.session.key = undefined/null

    小黑框
            npm init
            npm i express cookie-session  --save
            记得把package内的script改为
                    "start":"supervisor   ./app.js"
        let express=require('express')
        var cookieSession = require('cookie-session')
        let app=express()
        app.listen(3000)

        app.use(express.static("./public"))

// 安装中间件,key必须传
app.use(cookieSession({
    name: 'session',//请求体身上绑定一个session
    keys: ['key1', 'key2']
}));
app.get('/login',(req,res,next)=>{
    // 得到用户名和密码req.query/body
    // 兜库对比
    // 给浏览器中cookie,同时给服务器保留一份session
    // 返回数据给浏览器
    req.session['user_id']='bmw';//种
    // req.session[req.query.username]=req.query.password;
    res.send({err:0})//postman内body内会有内容
    // console.log(req.session)//若果中间件没有传就是undefined
    // 此时在浏览器或者postman内看到cookie是加密的
})
app.get('/user',(req,res,next)=>{
    // 接受浏览器携带过来的cookie,对比服务器上的session
    // 对比成功:返回user数据,失败:返回失败数据
    console.log(req.session['user_id']);
    res.send({err:0})
    // 返回数据给浏览器
})
app.get('/logout',(req,res,next)=>{
    // 删除浏览器的cookie
    // 对比成功:返回user数据,失败:返回失败数据
    req.session['user_id'] = undefined;
    res.send({err:0})
    // 返回数据给浏览器
})

例子

        let express = require('express');
var cookieSession = require('cookie-session')

let app = express();
app.listen(3000);

app.use(express.static('./public'))

//安装中间件
app.use(cookieSession({
  name: 'bulala',
  keys: ['key1', 'key2']
}))

app.get('/login',(req,res,next)=>{
  //得到用户名和密码 req.query/body
  // 兜库对比
  // 给浏览器种cookie ,同时给服务器保留一份session
  req.session[req.query.username]=req.query.password
  res.send({err:0})
  //返回数据给浏览器
})

app.get('/user',(req,res,next)=>{
  // 接收浏览器携带过来的cookie ,对比 服务器上的 session
  // 对比成功: 返回user数据  失败: 返回失败数据
  console.log(req.session['alex'])
  let session = req.session['alex'];
  if(session){////返回数据给浏览器
    res.send({err:0,data:'数据'})
  }else{
    res.send({err:1,mess:'未登录'})
  }
  
})

app.get('/logout',(req,res,next)=>{
  // 删除浏览器段的cookie
  req.session['alex'] = undefined
  res.send({err:0})
})

猜你喜欢

转载自www.cnblogs.com/sansancn/p/11012612.html