97 # session

简介: 97 # session

koa 里的 cookie 用法

koa 里内置了设置 cookie 的方法

npm init -y
npm i koa @koa/router

用法:

const Koa = require("koa");
const Router = require("@koa/router");
const crypto = require("crypto");
const app = new Koa();
let router = new Router();
app.use(router.routes());
app.keys = ["kaimo"];
router.get("/visit", async (ctx, next) => {
    let visit = ctx.cookies.get("visit") || 0;
    visit++;
    ctx.cookies.set("visit", `${visit}`, {
        httpOnly: true,
        signed: true
    });
    ctx.body = `你当前访问次数${visit},签名:${crypto.createHmac("sha1", "kaimo").update(`visit=${visit}`).digest("base64")}`;
});
app.listen(3000);
console.log("Server running at http://127.0.0.1:3000/");

session

  • session 基于 cookie 的,通过 cookie 的机制,制造一个服务端存储的空间
  • session 比 cookie 安全,每次重启服务会丢失,可以用 redis 来存储 session

办卡例子:给一个固定的卡号

npm i uuid
const Koa = require("koa");
const Router = require("@koa/router");
const uuid = require("uuid");
const app = new Koa();
let router = new Router();
app.use(router.routes());
app.keys = ["kaimo"];
const session = {};
const cardName = "kaimo.sid"; // 卡的名字,标识店铺名
router.get("/visit", async (ctx, next) => {
    let cardId = ctx.cookies.get(cardName);
    if (cardId && session[cardId]) {
        session[cardId].count--;
        ctx.body = `你有${session[cardId].count}次机会`;
    } else {
        let cardId = uuid.v4();
        session[cardId] = { count: 3 };
        ctx.cookies.set(cardName, cardId);
        ctx.body = `你有${session[cardId].count}次机会`;
    }
});
app.listen(3000);
console.log("Server running at http://127.0.0.1:3000/");

koa-session 用法

Koa 的简单会话中间件。默认为基于 Cookie 的会话并支持外部存储。

https://www.npmjs.com/package/koa-session

npm i koa-session
const Koa = require("koa");
const Router = require("@koa/router");
const session = require("koa-session");
const app = new Koa();
let router = new Router();
app.use(session({}, app));
app.use(router.routes());
app.keys = ["kaimo"];
router.get("/visit", async (ctx, next) => {
    ctx.session.visit = ctx.session.visit || 0;
    ctx.session.visit++;
    ctx.body = `你有${ctx.session.visit}次机会`;
});
app.listen(3000);
console.log("Server running at http://127.0.0.1:3000/");

目录
打赏
0
0
0
0
21
分享
相关文章
LabVIEW 在运行时初始化数组并允许用户编辑值
LabVIEW 在运行时初始化数组并允许用户编辑值
362 0
什么是类加载器,类加载器有哪些?
主要有一下四种类加载器: 1. 启动类加载器(Bootstrap ClassLoader)用来加载java核心类库,无法被java程序直接引用。 2. 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提 供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。 3. 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoa
OpenAI重拾规则系统,用AI版机器人定律守护大模型安全
在人工智能领域,大语言模型(LLM)展现出强大的语言理解和生成能力,但也带来了安全性和可靠性挑战。OpenAI研究人员提出“规则基于奖励(RBR)”方法,通过明确规则引导LLM行为,确保其符合人类价值观和道德准则。实验显示,RBR方法在安全性与有用性之间取得了良好平衡,F1分数达97.1。然而,规则制定和维护复杂,且难以完全捕捉语言的多样性。论文:https://arxiv.org/pdf/2411.01111。
267 13
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
181 1
PyTorch 在自然语言处理中的应用案例研究
【8月更文第27天】PyTorch 是一个强大的开源机器学习框架,它为开发者提供了构建和训练深度学习模型的能力。在自然语言处理(NLP)领域,PyTorch 提供了一系列工具和库,使开发者能够快速地实现和测试新的想法。本文将介绍如何使用 PyTorch 来解决常见的 NLP 问题,包括文本分类和机器翻译,并提供具体的代码示例。
219 2
渗透测试-靶机DC-2-知识点总结
渗透测试-靶机DC-2-知识点总结
143 0
阿里云域名解析
简单的3步,让你快速设置完毕阿里云的域名解析,修改DNS解析记录。首先你需要打开阿里云,然后在上方找到域名的控制台。进入到域名控制台之后,找到想要设置的域名,在想要设置的域名处,点击解析,进入到解析后台。
1148 0
阿里云域名解析
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问