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服务器收到客 ...
随机推荐
- js 禁用F12 和右键查看源码
<script> window.onkeydown = function(e) { if (e.keyCode === 123) { e.preventDefault() } } wind ...
- 关于redis的几件小事(七)redis缓存雪崩与穿透
1.缓存雪崩 (1)什么是缓存雪崩 缓存雪崩指的是在同一时刻,缓存大量失效,导致大量的请求直接到了数据库,数据库压力剧增,引起系统崩溃.可能出现的情况有: ①大量的key设置了相同的过期时间,导致在缓 ...
- 【Lucene】小谈lucene的BooleanQuery查询对象
BooleanQuery用于逻辑查询,即所谓的组合查询,具体的逻辑关系如下: 一个具体的使用测试,如下:
- js之运算符其它运算符(三元运算符,逗号运算符,void运算符,typeof,delete运算符)
Javascript支持很多其它的运算符,具体如下: 一.条件运算符(?:) 条件运算符是Javascript中唯一的三个操作数的三元运算符,有时会直接称做是“三元运算符”. 基本格式:conditi ...
- python 模块使用
模块使用 定义:模块就像一个工具包一样,里面有很多工具(函数.类),使用时需要通过import导入. 分类: 标准库:random.sys.os.time 第三方:就是好人已经写好的特定功能的模块,你 ...
- jq自动触发事件
$('.btn_fath ').trigger("click");$('.btn_fath ').click();
- vue 内存数组变化监听
watch: { carts: { handler(val, oldVal) { subtotal(this.carts); console.log(this.carts) }, deep: true ...
- CDH5.16.1升级kafka0.10到1.0.1
激活1.0.1的包
- 脚本之SSH登录
脚本之SSH登录 一)[python实现] 导入pxssh模块 常用的三个方法: Login() 建立ssh连接 Logout() 断开连接 Prompt() 等待系统提示符,用于等待命令执行结束 S ...
- Dubbo 03 Restful风格的API
目录 Dubbo03 restful风格的API 根路径 协议 版本 用HTTP协议里的动词来实现资源的增删改查 用例 swagger(丝袜哥) OpenAPI 资源 编写API文档 整合Spring ...