nodejs03中间件 -1cookie-session

Posted sansancn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)
)

以上是关于nodejs03中间件 -1cookie-session的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS + Express - 将会话中间件应用于某些路由

使用 restful API 在 nodejs 上实现微风

如何使用nodejs作为java和前端的中间件

nodejs 中使用mysql数据有没有类似 mongoose 的中间件

[转]Nodejs基础中间件Connect

[转]Nodejs基础中间件Connect