express学习(三)—— cookie和session

express学习(三)—— cookie和session

 cookie存在浏览器中,最大只能保存4K数据,不安全

 session存在服务器中,不能独立(先读取cookie再读取session),较安全

cookie

工具

发送cookie:

基本的东西先写好:

const express = require(‘express‘);

var server=express();

// cookie
server.use(‘/‘,function(req,res){
   res.cookie(‘名字‘, ‘值‘, {path: ‘/aaa/a.html‘, maxAge: 30*24*3600*1000});  //path指明谁可以访问,‘/aaa/a.html‘表示根目录下aaa文件夹中的a.html文件;maxAge表示最长保留时间(以毫秒计)
})

server.listen(8080)

读取cookie

接着,用cookie-parser工具

const express=require(‘express‘);
const cookieParser=require(‘cookie-parser‘);

var server=express();

//cookie
server.use(cookieParser());

server.use(‘/‘, function (req, res){
  console.log(req.cookies);

  res.send(‘ok‘);
});

server.listen(8080);

执行结果:

但是cookie分为两种,加密的(有签名的)、不加密的(没有签名的)。

const express=require(‘express‘);
const cookieParser=require(‘cookie-parser‘);

var server=express();

//cookie
server.use(cookieParser(‘wesdfw4r34tf‘));

server.use(‘/‘, function (req, res){
  req.secret = ‘wesdfw4r34tf‘;   //有了上面的’server.use(cookieParser(‘wesdfw4r34tf‘));‘,这里的req.secret可以不写。因为cookie会自动传值给secret
  res.cookie(‘user‘, ‘blue‘, {signed: true});

  console.log(‘签名cookie:‘, req.signedCookies,‘\n‘)
  console.log(‘无签名cookie:‘, req.cookies);

  res.send(‘ok‘);
});

server.listen(8080);

执行结果:

一定要把签名的内容告诉cookieParser,如server.use(cookieParser(‘wesdfw4r34tf‘));,否则它不知道解读谁,就会返回很长一串,如图所示的结果:

删除cookie

一条语句就足够

res.clearCookie(‘名字‘);

session

用到一个中间件:cookie-session:

npm install cookie-session --save

const express=require(‘express‘);
const cookieParser=require(‘cookie-parser‘);
const cookieSession=require(‘cookie-session‘);

var server = express();

server.use(cookieParser());
server.use(cookieSession({
    name:‘my_session‘,
    keys:[‘aaa‘,‘bbb‘,‘ccc‘], //数组越长越安全
    maxAge:2*3600*1000  // 保存两小时
}));

server.use(‘/‘,function(req,res){
    if(req.session[‘count‘]==null){
        req.session[‘count‘]=1;
    }else{
        req.session[‘count‘]+=1;
    }
    console.log(req.session[‘count‘])

    res.send(‘ok‘);
})

server.listen(8080);

把密钥数组增大:

var arr=[];
for(var i=0;i<100000;i++){
    arr.push(‘sig_‘+Math.random());
}

server.use(cookieParser());
server.use(cookieSession({
    name:‘my_session‘,
    keys:arr, //用到上面的数组
    maxAge:2*3600*1000  // 保存两小时
}));

总结

server.use(cookieParser(‘签名字符串‘));
server.use(cookieSession({

}));

server.use(function (req, res){
//发送cookie
    res.cookie(名字, 值, {signed: true});

//读取cookie
    res.cookies[‘user‘]

//删除cookie
    res.clearCookie(‘名字‘);

//获取session
    res.session[‘xxx‘]
//删除session
    delete res.session[‘xxx‘];
});

为什么delete不可以删除cookie?

因为cookie存在浏览器端,而session是存在服务器端,所以只有session才可以使用delete方法删除。

时间: 2024-10-12 03:02:30

express学习(三)—— cookie和session的相关文章

node学习之cookie和session

c什么是cookie Cookie设计的初衷是 维持浏览器和服务端的状态.http是无状态的,服务端不能跟踪客户端的状态. 浏览器第一次向服务器发送请求,服务器会返回一个cookie给客户端浏览器,浏览器下一次发送请求时,会携带cookie. 而node.js 的框架express 因为保持高性能, 没有封装太多的功能,而是按需加载的形式, 引入自己需要的中间件.而cookie 常用的插件是cookie-parser 读取cookie: 需要借助cookie-parser. //引入cookie

Django学习之Cookie和Session

一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除Cookie 4.Cookie版登陆校验 三.Session 1.Session的由来 2.Session流程解析 四.Django中Session操作 1.相关方法 2.Session版登陆验证 4.Django中的Session配置 一.Cookie 1.Cookie的由来 大家都知道HTTP协

Django框架(十):视图(三) Cookie、Session

1. Cookie Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密).Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明.Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie).Cookie名称和值可

会话跟踪技术--cookie和session 小结

学习过servlet的都知道,servlet是单例多线访问的,所以我们不能设置servlet成员变量来存放浏览器的访问数据.怎么解决浏览器的访问数据,让不同访问者能够访问到自己的数据呢? 相信学习完了cookie和session技术之后,读者会明白这个问题. 我们在浏览器上使用http协议在网络上传输数据的时候,服务器对于http的状态处理有两个方式,cookie和session. 笔者对于cookie设session的理解是这样的:当我们想要记录浏览器与服务器之间的交互的时候,通常的方法就是

Cookie和Session的的区别

前些天学习了Cookie和Session,我以对比的方式来简单说下两者的区别: 什么是Cookie? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递.Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息. 什么是Session? Session一般译作会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待session,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成

2014-07-09 Java Web的学习(5)-----会话管理(Cookie和Session)

1.什么是会话 会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待会话,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成购物直到关闭浏览器,这是一个会话.而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做会话.因此在谈论会话的时候要注意上下文环境.而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保

第十一章 Django框架学习——Cookie和session

第十一章 Django框架学习--Cookie和session 一.Cookie简介 二.装饰器版登录校验 三.session简介 四.如何在CBV中使用装饰器 一.Cookie简介 什么是Cookie(what): Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的原理:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能

Node Express 操作( Cookie 和 Session )

1, Cookie 操作, 需要安装 cookie-parser 依赖 => npm i cookie-parser -D 2, 基本使用 // 引入 express let express = require('express'); let cookieParse = require('cookie-parser'); // cookie 依赖 // 创建服务器 var server = express(); server.listen(80); // 响应请求 server.use(cook

【转】学习总结--Cookie &amp; Session总结

转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理1)什么是状态管理?   将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理.2)状态管理技术cookie:    a,什么是cookie?   是一种客户端(浏览器)的状态管理技术.   浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来:当浏览器再次访