zoukankan      html  css  js  c++  java
  • 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})
    })
    
    
  • 相关阅读:
    mysql主从之slave-skip-errors和sql_slave_skip_counter
    mysql can't create threads in threadpool
    mysql binlog_row_image的选择
    MySQL5.7 error log时间显示问题
    Informatica 常用组件Expression之二 创建EXP组件
    Informatica 常用组件Expression之一 概述
    Informatica 常用组件Source Qualifier之九 创建SQ转换
    Informatica 常用组件Source Qualifier之八 会话前和会话后 SQL
    Informatica 常用组件Source Qualifier之八 Distinct
    Informatica 常用组件Source Qualifier之七 使用排序端口
  • 原文地址:https://www.cnblogs.com/sansancn/p/11012612.html
Copyright © 2011-2022 走看看