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服务器收到客 ...
随机推荐
- pytorch中torch.narrow()函数
torch.narrow(input, dim, start, length) → Tensor Returns a new tensor that is a narrowed version of ...
- window.prompt()和 window.confirm()选择
代码截图: 效果: 代码截图: 效果:
- js 重要函数
1. Array.some some() 方法用于检测数组中的元素是否满足指定条件(函数提供) 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测.如果没有满足条件的元素,则返 ...
- 64位Win7安装Oracle12C临时位置权限错误解决方案
今天装备安装Oracle12C体验一下,结果遇到问题:请确保当前用户具有访问临时位置所需的权限,无法继续安装,上网查了一下,解决方案如下: 第一步: 控制面板>所有控制面板项>管理工具 ...
- PAT Basic 1001 害死人不偿命的(3n+1)猜想 (15 分)
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...
- Python time、datetime、os、random、sys、hashlib、json、shutil、logging、paramiko、subprocess、ConfigParser、xml、shelve模块的使用
文章目录: 1. time & datetime模块 2. os模块 3. random模块 4. sys模块 5. hashlib模块 6. json模块 7. shutil模块 8. lo ...
- server version for the right syntax to use near 'USING BTREE 数据库文件版本不合导致的错误
MySQL 返回:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MyS ...
- Linux基本命令之Vim
在vim,vi,gedit编辑器中显示行号: 在命令模式下:set nu 取消行号:set nonu 参照博客:https://www.cnblogs.com/Mr0wang/p/728 ...
- 〇——HTML的本质以及在Web程序中的作用
对于所有的Web应用,其实本质上都是一个socket服务端,用户的浏览器就是一个socket的client,我们看看下面这段代码 import socket def handle_request(cl ...
- pyhton函数
函数编写文档 放在函数开头的字符串称为文档字符串(docstring),将作为函数的一部分存储起来 def square(x): 'Calculates the square of the numbe ...