sese

下面讲的都是基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\');
});

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

 

分类:

技术点:

相关文章: