session

cookie和seesion的区别

1.cookie的数据是保存在浏览器的,session保存在服务器上

2.cookie不是很安全,别人可以分析存在本地的cookie并进行cookie欺骗,考虑到安全,应该使用session

3.session会在一定时间内,保存在服务器上,当请求个数过多的时候,会占用较多的服务器性能

4.单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点做多保存20个cookie

session的介绍

session的运作通过一个session_id来进行。session_id通常保存在cookie中,比如express中,默认的字段是connect.sid,当请求到来的时候,服务端检查cookie是否携带这个session_id,并且通过这个session_id与服务端的sessin data关联起来,进行数据的修改和保存

意思就是:当你浏览网页的时候,服务器会随机产生一个标志然后存在cookie中,然后当浏览器发送请求的时候,cookie会携带这个标志,然后浏览区就知道你上次访问的内容,并且从服务器中取出你上次的记录

session可以存放在:

       1.内存中

       2.cookie本身

       3.数据库中

       4.redis或memcached中

express操作session需要引入中间件express-session

session的属性:

  • name:设置cookie,保存session的名称,默认是connect.aid
  • store:session的存储方式,默认是内存中,也可以设置在redis等
  • secret:使其产生signedCookie防止篡改
  • cookie设置存放session_id的cookie比如path,httpOnly等这些cookie的属性
  • rolling:每个请求重新设置一个cookie,刷新过期时间
  • resave:即使session没有别修改,也保存session的值默认是true

撸代码

cnpm i express-session --save
//引入session
let session = require('express-session');
app.use(session({
    secret:'123',//秘钥
    resave:false,
    saveUninitialized:true
})) //配置中间件

session多用于登录验证这方面

/*
* seesion 保存在服务器上
* cookie保存在浏览器上
* */
const express = require('express');
let session = require('express-session');
let app= express();
/*
* 配置session
* */
app.use(session({
    secret:'123',//秘钥
    resave:false,
    saveUninitialized:true,
    name:'kaidi',//给本地cookie设置一个值
    cookie:{maxAge:30000},//里面设置cookie的一些属性
    rolling:true      //重置cookie的过期时间,默认是false
}))
//配置路由
app.get('/',function (req,res) {
    //欢迎权哥大驾光临
    if(req.session.user){
        res.send('欢迎权哥大驾光临')
    }else{
        res.send('你没有登录')
    }
})
app.get('/login',function (req,res) {
    //登录进来设置一个session
    req.session.user = 'liquan';  //设置一个session
    res.send('登陆成功')
})
app.get('/nologin',function (req,res) {
    if(req.session.user){
        res.send('你是安全')
    }else{
        res.send('你进行违规操作,封号成功');
    }
})
//如果强制删除session
app.get('/rmlogin',function (req,res) {
    req.session.cookie.maxAge = -1;//强制设置过期时间
    res.send('你被封号了')
})
app.listen(3000,function () {
    console.log('server is running');
})

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值