nodejs 中的 cookie 及 session
cookie-parser 插件:cookie解析,加密的操作
cookie-session 插件:session 的解析操作
http 是无状态的
cookie:在浏览器保存一些数据,每次向服务器发送请求的时候,都会带过来
使用 cookie 的缺点:不安全,大小限制 4kb
session:保存数据用的,保存在服务器
使用 session 的优点:安全,没有大小限制
session 的工作原理

session 基于 cookie 实现的,不能独立实现,cookie 中会有一个 session 的 id ,而这个服务器,利用 session 的 id,找到 session 的 id,读取写入等等
隐患:session 劫持,随时更改 session ,加密 cookie
cookie:
let express = require("express");
let cookieParser = require("cookie-parser");
let server = express();
server.listen(3000); // 先创建一个服务器
server.use(cookieParser('jsdkfjsidfj')); // 需要靠此来解析 cookie 里面的参数:可选,用来加密 cookie ,为了安全,参数是随便写,想写什么写什么
server.use("/",function(req,res){
console.log(req.cookies); // 从浏览器中得到的 cookie
console.log(req.signedCookies) // 未签名版的密钥,也就是说没有经过加密
res.cookie('user','blue',{ // 从服务器响应到浏览器中的 cookie
path:"/", // cookie 的路径
maxAge:24*3600*1000, // cookie 的持续时间 24 小时
signed:true // 签名 签名的作用,不能修改,也就是说用户只能看,但是不能改 cookie 里的东西
})
res.clearCookie('user') // 删除 cookie 里面的参数:user ,这是我的 cookie ,大家可以根据自己的情况来定
})
session:
是基于 cookie 实现的,cookie 的升级版,与 cookie 相比,更安全,且没有大小限制
let express = require("express");
let cookieParser = require("cookie-parser");
let cookieSession = require("cookie-session");
let server = express();
server.listen(3000); // 创建的服务器
// 为了使 session 更安全
let arr = [];
for(let i=0;i<100000;i++){
arr.push('sig'+Math.random()) // 此时的 arr 是有多么恐怖,因为 密钥使循环使用的,当别人破了你一个密钥后,
}
server.use(cookieParser()); // 解析 cookie
server.use(cookieSession({ // 是的,想使用这个插件,必须使用 cookieParser 来先将 cookie 解析了
name:"sess", // 设置了 session
keys:arr, // 密钥,必填,循环使用 cookie 的密钥,一定程度上保证了安全
maxAge:2*3600*1000 // 2 小时,session 的存储时间 2 小时
}))
server.use("/",function(req,res){
console.log(req.session) // 读取 session
res.send("ok");
})
// 判断用户访问了几次网站之类的
server.use("/",function(req,res){
if(req.session[cont]==null){ // 证明用户使第一次来
req.session[cont] = 1 ; // 所以给他计数为 1
}
else{
req.session[cont]++; // 之后每次访问都累加
}
console.log(req.session[cont]) // 这个就是用户总共访问的次数
res.send("ok");
})
nodejs 中的 cookie 及 session的更多相关文章
- IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token
本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...
- 第74节:Java中的Cookie和Session
第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...
- Flask中使用cookie和session
Flask中使用cookie和session 设置cookie from flask import Flask,Response app = Flask(__name__) @app.route('/ ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- django系列7.2--django中的cookie和session基本操作,浏览器登陆验证的不同实现
django中的cookie和session(02)–操作 一.Django中的cookie操作 ctrl + shift + del 是谷歌浏览器中清除页面缓存和cookie的快捷键 1.设置coo ...
- Django---Django中使用COOKIE和SESSION
Django---Django中使用COOKIE和SESSION 一丶Cookie cookie的由来 # HTTP协议是无状态的. # 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请 ...
- Servlet中的cookie和session
保存数据的2中方式 Cookie Session Cookie 我们可以将一些信息保存到cookie中,cookie存放在对应的浏览器目录里面.每个站点可以保存20个cookie,最大长度不超过4k. ...
- Django中的cookie与session
cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...
- 理解会话中的Cookie和Session对象
会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在java语言中,Servlet程序是由WEB服务器调用,web服务器收到客 ...
随机推荐
- 使用xpath爬取猫眼电影排行榜
最近在学习xpath,在网上找资料的时候,发现一个新手经常拿来练手的项目,爬取猫眼电影前一百名排行的信息,很多都是跟崔庆才的很雷同,基本照抄.这里就用xpath自己写了一个程序,同样也是爬取猫眼电影, ...
- 07 Nginx负载均衡
1.负载均衡的实现. 1.准备三台虚拟机,比如 192.168.119.146 提供资源 192.168.119.147 提供nginx的负载均衡 192.168.119.148 提供资源 2.分别配 ...
- css之盒模型(box,box-shadow,overflow,BFC)
一.盒模型的概念 CSS中每一个元素都是一个盒模型(Box Model),包括HTML和body标签元素.一般称之为box model.它的本质就是一个盒子,它的属性有margin,border,pa ...
- 多线程之实现Runnable接口及其优点
多线程之实现Runnable接口: 1.创建一个Runnable接口的实现类 2.在实现类中重写Runnable接口的run方法 3.创建一个Runnable接口实现类的对象 4.创建Thread类对 ...
- python 教程(一)
必须感慨一下,整了一周多的时间才基本理通顺.自己老是不能静心,方法也不对所以走了很多弯路. 1.建议:一定要先去看官方文档. 下面我们来看一周的成果吧: windows下如何下载并安装Python 3 ...
- (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
在idea上怎么才能使用Spring的热部署 这里仅用Maven做介绍 (1)在Maven中添加依赖 (2)在插件配置 但是,为什么配置了还是没有用呢 ?! 这是因为idea默认是没有自动编译的,我们 ...
- 【hdu 6155】Subsequence Count
题意 给定一个 \(01\) 串 \(S_{1...n}\) 和 \(Q\) 个操作. 操作有 \(2\) 种类型: 1. 将 \([l,r]\) 区间所有数取反(\(0→1,\space 1→0\) ...
- 【AGC 036C】GP2
https://atcoder.jp/contests/agc036/tasks/agc036_c 题意 有一个长度为 $n$ 的非负整数序列 $x$,初始时全为 $0$.一次操作定义为选择一对正整数 ...
- Mysql配置查询
查看mysql数据库的线程数: show global status like 'Thread%'; 如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服 ...
- vue cli3.0快速搭建项目详解(强烈推荐)
这篇文章主要介绍下vue-cli3.0项目搭建,项目结构和配置等整理一下,分享给大家. 一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cl ...