nodejs cookie与session

cookie、session

cookie:在浏览器保存一些数据,每次请求都会带过来
*不安全、有限(4K)

session:保存数据,保存在服务端
*安全、无限

--------------------------------------------------------------------------------------------------------------

session:基于cookie实现的
*cookie中会有一个session的ID,服务器利用sessionid找到session文件、读取、写入

隐患:session劫持

cookie:

1.cookie空间非常小——省着用

2.安全性非常差——校验cookie是否被篡改过

用法:

a.发送cookie

res.secret='字符串';  //秘钥,对cookie加密
res.cookie(名字,值,{path: '/',maxAge: 毫秒,signed: true});
// path:路径,maxAge:过期时间,signed:是否加密

b.读取cookie

cookie-parser中间件
server.use(cookieParser('秘钥'));
server.use(function (){
  req.cookies    未签名版
  req.signedCookies    签名版
});

c.删除cookie

res.clearCookie(名字);

举例:

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

var server=express();

cookie
server.use(cookieParser('wesdfw4r34tf'));

server.use('/', (req,res){
  req.secret='wesdfw4r34tf';
  res.cookie('user','blue',{signed: true});

  console.log('签名cookie:',req.signedCookies)
  console.log('无签名cookie:'res.send('ok'); }); server.listen(8080);

session:

cookie-session中间件

cookieSession(options)

name

要设置的Cookie的名称,默认为session

keys

用于签署和验证Cookie值的键列表。

secret

如果keys没有提供,将用该字符串做标记

Cookie Options

其他选项传递给 cookies.get() 和 cookies.set() ,允许你控制secure、path、domain,并签署其他设置。

这些选项还可以包含以下任何内容(有关完整列表,请参阅 cookies模块文档

  • maxAge:表示Date.now()到期的毫秒数
  • expiresDate指示Cookie过期日期对象(默认情况下在会话结束时过期)。
  • path:指示cookie路径的字符串(/默认情况下)。
  • domain:表示cookie的域的字符串(无默认)。
  • sameSite:一个布尔值或字符串,指示cookie是否为“相同站点”cookie(false默认情况下)。这可以设置为'strict',,'lax'true(映射到'strict')。
  • secure:一个布尔值,指示cookie是否仅通过HTTPS发送(false默认为HTTP true默认情况下为HTTPS)。如果这样设置,true并且Node.js不是直接通过TLS连接,请务必阅读如何在代理之后设置Express,否则Cookie可能无法正确设置。
  • httpOnly:一个布尔值,表示cookie是否仅通过HTTP(S)发送,并且不提供给客户端JavaScript(true默认情况下)。
  • signed:一个布尔值,表示cookie是否要被签名(true默认情况下)。如果是这样的话,.sig还会发送一个带附加后缀的同名的另一个cookie ,一个27字节的url-safe base64 SHA1值代表第一个Keygripcookie-name = cookie-value的哈希此签名密钥用于在下次接收到Cookie时检测篡改。
  • overwrite:一个布尔值,表示是否覆盖以前设置的相同名称的cookie(true默认情况下)。如果这是真的,在设置此Cookie时,将在同一请求中设置相同名称的所有Cookie(不管路径或域)是否从Set-Cookie头部中过滤掉
 

1.写入

server.use(cookieParser());
server.use(cookieSession({
  keys: [..,..,..]
}));

2.读取

server.use('/',1)"> (){
  req.session
});

2.删除

delete req.session
req.session = null

举例:

const express=require('express');
const cookieSession=require('cookie-session'cookie
server.use(cookieParser());
server.use(cookieSession({
  name: 'sess'],maxAge: 2*3600*1000
}));

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

  console.log(req.session);

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

server.listen(8080);

 

--------------------------------------------------------------------------------------------------------------

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希