zoukankan      html  css  js  c++  java
  • node学习笔记9——cookie,session相关操作

    下面讲的都是基Express及相关的包。所以在实践本篇文章之前,通过npm安装好Express, cookie-parser, cookie-session这三个安装包。

    先简单说一下,如何用Express搭建一个服务器环境。如下:

    const express=require("express");//引用express
    
    var server=express();//创建服务器
    server.listen(8090);//监听服务器

    就是这么简单三句即可。

    在说cookie, session 之前,先了解一下这2个东西的基本特性:

    cookie:

      1.保存在浏览器端,每次请求都会带过来;

      2.不安全、大小有限(4K)。

    session:

      1.保存在服务器端;

      2.安全、理论上是无限的;

      3.基于cookie实现的。

    对于这2个东西的操作,无非就是发送,读取,写入,删除这几种操作。

    先讲一下cookie:

    1.发送:

    const express=require("express");
    
    var server=express();
    server.listen(8090);
    
    //发送cookie
    server.use('/www/test.html',function(req,res){
        res.cookie('user','test',{path:'/www',maxAge:30*24*3600*1000});
        
        res.send('ok');
    })

    运行这个js,可以看到浏览器里面的cookie如下图:

    2.读取cookie,如果需要用到签名功能,需要引用cookie-parser模块:

    const express = require("express");
    const cookieParser = require("cookie-parser");
    
    var server = express();
    server.use(cookieParser("adtq563fgkj452ag"));
    
    //先写入,再读取,secret表示cookie签名,可以防止别人篡改你的cookie
    server.use('/', function (req, res) {
        req.secret = 'adtq563fgkj452ag'; //如果上面在cookieParser传入了签名,这句话可以不写
        res.cookie('user', 'sese', {
            signed: true //表示该cookie需要签名
        });
        console.log('签名的cookie:', req.signedCookies); //读取签名的cookie
        console.log('无签名的cookie:', req.cookies); //读取没签名的cookie
    
        res.send('ok');
    });
    
    server.listen(8090);

    执行该JS,结果如下图:

    服务器端返回的结果:

    3.删除cookie,语句为clearCookie():

    const express = require("express");
    const cookieParser = require("cookie-parser");
    
    var server = express();
    
    //删除cookie
    server.use('/', function (req, res) {
        res.clearCookie('user');
        res.send('ok');
    });
    
    server.listen(8090);

    -------------------------我是存在感十足的分割线-------------------------

    现在讲一下sessoion。

    1.写入session,需要引用cookie-session模块 :

    const express = require("express");
    const cookieParser = require("cookie-parser");
    const cookieSession = require("cookie-session");
    
    var server = express();
    
    //生成session的密钥数组
    var arr=[];
    for(var i=0;i<10000;i++){
        arr.push('sig_'+Math.random());
    }
    server.use(cookieParser());
    server.use(cookieSession({
        name:'sess',
        keys:arr // 密钥
    }));
    
    
    server.use('/', function (req, res) {
        res.send('ok');
    });
    
    server.listen(8090);

    执行上面代码,显示结果如下 :

    2.删除session,语句为delete req.session[name],即为:

    server.use('/', function (req, res) {
        delete req.session['sess'];
        res.send('ok');
    });

    大家可以亲自测试上面的例子~

  • 相关阅读:
    BZOJ3105:[CQOI2013]新Nim游戏(线性基,贪心)
    BZOJ5102:[POI2018]Prawnicy(贪心,堆)
    BZOJ3533:[SDOI2014]向量集(线段树,三分,凸包)
    BZOJ3569:DZY Loves Chinese II(线性基)
    BZOJ3534:[SDOI2014]重建(矩阵树定理)
    【BZOJ 1202】 [HNOI2005]狡猾的商人
    【BZOJ 1003】 [ZJOI2006]物流运输trans
    【BZOJ 2321】 [BeiJing2011集训]星器
    【BZOJ 1010】 [HNOI2008]玩具装箱toy
    【BZOJ 2730】 [HNOI2012]矿场搭建
  • 原文地址:https://www.cnblogs.com/sese/p/9352375.html
Copyright © 2011-2022 走看看