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服务器收到客 ...
随机推荐
- 转换byte(十进制)为图形(大小写字母,符号)
/** * 转换byte(十进制)为字母 */ public static String ByteToLetter (byte[] chars) { String Letter = "&qu ...
- 25 Python之模块与包
一.模块 模块就是一个包含了python定义和申明的文件,文件名就是模块的名字加上.py的后缀/ 模块的分类: 1.使用python编写的py文件 2.已被编译位共享库或者DLL或 ...
- SuperMap-WebGL-坐标系及转换说明
转载自:https://blog.csdn.net/supermapsupport/article/details/89519310 一.坐标系介绍我们先来列举下Cesium中的坐标系:WGS84经纬 ...
- linux ftp 添加用户及权限管理
Linux下创建用户是很easy的事情了,只不过不经常去做这些操作,时间久了就容易忘记,顺便配置一下FTP.声明:使用Linux版本release 5.6,并以超级管理员root身份运行. 1.创建用 ...
- PAT Basic 1007 素数对猜想 (20 分)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数.“素数对猜想”认为“存在无穷多对相邻且差为2的素 ...
- 用xshell连接l自己的inux
有时候连接会提示失败(当然确保账号密码没错),这里需要安装一个服务,ssh服务器 1)ubuntu安装ssh服务器 sudo apt-get install openssh-server 2)出现问题 ...
- 第二章 Vue快速入门-- 26 过滤器-定义私有过滤器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- BZOJ1233 [Usaco2009Open]干草堆tower[贪心+单调队列优化]
地址 注意思路!多看几遍! 很巧妙的一道题.不再是决策点以dp值中一部分含j项为维护对象,而是通过维护条件来获取决策. 首先有个贪心策略,让底层的宽度尽可能小,才能让高度尽可能高.所以应该倒着dp,表 ...
- 使用xpath提取页面所有a标签的href属性值
# -*- coding: utf-8 -*- #1.选取节点 #获取所有的div元素 //div #/代表获取根节点的直接子元素 #获取所有带有id属性的div //div[@id] #2.谓词(索 ...
- Win10 搭建IIS服务
IIS服务器,俗称:Web服务器又或者叫做网站服务器. IIS详解: https://baike.baidu.com/item/iis/99720?fr=aladdin 开始搭建: 1. 打开控制面板 ...