首页 > 其他分享 >cookie与session

cookie与session

时间:2022-11-18 23:13:51浏览次数:26  
标签:const views koa ctx session cookie router

cookie

用户到商店买东西,商店出了个想法,给用户张会员卡,会员卡有两种方案
一种是上面的,一张卡能用10次折扣,每用一次次数-1。
但有个弊端,会员卡的次数记录在卡上,卡在用户里,要是用户用某些方法改了会员卡的次数就能无限刷
另一种是下面的,会员卡只记录个人信息,商店读取卡里的个人信息来获取折扣次数,并在商店的电脑改变次数,显然更安全

cookie就会服务器发给客户端的一个凭证,如商店给用户发会员卡,而商店通过session来对应cookie以此找到用户信息
cookie是写在客户端上的数据,session是记录在服务器上的数据

设置cookie

const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const views = require("koa-views");//引入koa-views
const nunjucks = require("nunjucks");//引入nunjucks引擎
const router = require("koa-router")();

app.use(views(__dirname + "/views",{
    map:{html:"nunjucks"}
}))



router.get("/",async ctx => {
    //cookie是以明值对(类似于对象的键值对)的方式记录在客户端(浏览器)的
    ctx.cookies.set("user","admin");//设置cookie 属性名是user,值是admin
    ctx.body = "cookie";
})

app.use(router.routes());

app.listen(3000,() => {
    console.log("server is running");
});

获取cookie

const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const views = require("koa-views");//引入koa-views
const nunjucks = require("nunjucks");//引入nunjucks引擎
const router = require("koa-router")();

app.use(views(__dirname + "/views",{
    map:{html:"nunjucks"}
}))



router.get("/",async ctx => {
    //cookie是以明值对(类似于对象的键值对)的方式记录在客户端(浏览器)的
    ctx.cookies.set("user","admin");//设置cookie 属性名是user,值是admin
    ctx.body = "cookie";
})

router.get("/test",async ctx => {
    let user = ctx.cookies.get("user");//获取相应字段的cookie
    ctx.body = user;
})

app.use(router.routes());

app.listen(3000,() => {
    console.log("server is running");
});

页面显示admin,说明成功拿到了cookie的值

记录网页访问次数

const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const views = require("koa-views");//引入koa-views
const nunjucks = require("nunjucks");//引入nunjucks引擎
const router = require("koa-router")();

app.use(views(__dirname + "/views",{
    map:{html:"nunjucks"}
}))



router.get("/",async ctx => {
    //cookie是以明值对(类似于对象的键值对)的方式记录在客户端(浏览器)的
    ctx.cookies.set("user","admin");//设置cookie 属性名是user,值是admin
    ctx.body = "cookie";
})

router.get("/test",async ctx => {
    let count = ctx.cookies.get("count");//获取cookie,但页面第一次加载是获取不到cookie的,要刷新一次才行
    if(count > 0){//判断是否有cookie
        count = ++count;
        ctx.cookies.set("count",count,{
            maxAge:5000//设置cookie过期时间为5s,5s内没有刷新页面cookie就会失效
        });
    }else{
        count = 1;
        ctx.cookies.set("count",1);
    }
    ctx.body = count;
})


app.use(router.routes());

app.listen(3000,() => {
    console.log("server is running");
});




5s后失效

session

标签:const,views,koa,ctx,session,cookie,router
From: https://www.cnblogs.com/ben10044/p/16905205.html

相关文章

  • Cookie、Session
    Cookie会话会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话有状态会话:你能怎么证明你是学生?录取通知书学校登记一个网......
  • Selenium4+Python3系列(七) - Iframe、Select控件、交互式弹出框、执行JS、Cookie操作
    前言突然,想把所有之前未更新的常用Api操作、演示写出来,算是对API的一种完结吧。下面按照Api模块来做逐一介绍。一、iframe操作iframe识别:语法:driver.switch_to.fram......
  • js-cookie 设置过期时间
    我们用js-cookie这款插件来设置cookie,比较方便,可以自行查看文档。js-cookie的示例中只有以天为单位的有效期:Cookies.set('name','value',{expires:7});//7天后......
  • Python中报错Invalid return character or leading space in header: Cookie
    这个问题主要是读取的配置文件config.ini里该cookie参数遇到的空格问题主要是在配置文件里cookie_data=XXXXXXX参数值后面有个莫名其妙的空格可能产生的原因是:在从页......
  • 10.django-cookie&session
    我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!在Web开发中,使用session来完成会话跟踪,ses......
  • Session的简单应用进行传值
    session可以看做是一个hashmap:存取值的原理同java中的HashMap的键值对相同session.setAttribute("key",value);是session存值的方法,session.getAttribute(key);是sessio......
  • Could not obtain transaction-synchronized Session for current thread
    一场景我的项目中,发生这个错误是由于我使用springmvc框架,但是在里面新建了一个springboot的camunda(流程)模块。而springmvc使用hibernate,camunda使用jpa的entityManager......
  • tensorflow1.x——如何在C++多线程中调用同一个session会话tensorflow1.x
     =================================================  从前文​​tensorflow1.x——如何在python多线程中调用同一个session会话​​可以知道,使用python多线程调用同一......
  • cookie (攻防世界)
    前言:这篇文章还是是为了帮助一些像我这样的菜鸟找到简单的题解题目描述进入网址解题工具:editthiscookie2问题解析: 首先科普一下 cookie(不是饼干)一般是......
  • tensorflow1.x——如何在python多线程中调用同一个session会话
    如何在python多线程中调用同一个session会话? 这个问题源于我在看的一个强化学习代码:​​https://gitee.com/devilmaycry812839668/scalable_agent​​ 在众多的机器学习的......