Koa Session的使用
Session 简单介绍
session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。
Session 的工作流程
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对, 然后将key返回到浏览器(客户)端并且保存到cookie中
浏览器下次再访问时,获取cookie,然后携带cookie(key),找到对应的session(value)。
客户的信息都保存在session中
koa-session 的使用
首先应用中安装 koa-session
npm install koa-session --save
然后将koa-session引入项目中
const session = require('koa-session');
配置session的中间件
// 配置session的中间件
app.keys = ['some secret hurr']; // cookie的签名
const CONFIG = {
key: 'koa:sess', // 默认
maxAge: 10000, // cookie的过期时间
overwrite: true, //(boolean) can overwrite or not (default true) 没有效果,默认
httpOnly: true, // true表示只有服务器端可以获取cookie
signed: true, // 默认 签名
rolling: false, // 在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
renew: true, // 在每次请求时强行设置 session,这将重置 session 过期时间(默认:false)
};
app.use(session(CONFIG, app));
使用session(设置和获取)
设置值 ctx.session.username = "张三";
获取值 ctx.session.username
创建一个node服务,app.js文件
let Koa = require('koa')
let router = require('koa-router')()
var session = require('koa-session');
var app = new Koa()
// 配置session的中间件
app.keys = ['some secret hurr'];   // cookie的签名
const CONFIG = {
  key: 'koa:sess', // 默认
  maxAge: 10000,  // cookie的过期时间
  overwrite: true,     //(boolean) can overwrite or not (default true) 没有效果,默认
  httpOnly: true, // true表示只有服务器端可以获取cookie
  signed: true, // 默认 签名
  rolling: false, // 在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
  renew: true, // 在每次请求时强行设置 session,这将重置 session 过期时间(默认:false)
};
app.use(session(CONFIG, app));
router.get('/',async (ctx)=>{
  //获取session
  ctx.body = '首页' + ctx.session.userinfo;
})
router.get('/news',async (ctx)=>{
  //获取session
  ctx.body = '新闻' + ctx.session.userinfo;
})
router.get('/login',async (ctx)=>{
  // 设置session
  ctx.session.userinfo = '张三';
  ctx.body="登录成功";
})
app.use(router.routes());   /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000);
启动服务后,访问首页,第一次访问首页是没有设置session的

然后访问登录页面后,设置session,设置了session,客户端会自动设置两个cookie来保存session的key

当我再次访问首页,在session还没过期之前,就可以获取到session

访问任何页面都可以获取到session

Cookie 和 Session 区别
cookie 数据存放在客户的浏览器上,session 数据放在服务器上
cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗 考虑到安全应当使用 session
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用 COOKIE。
单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。
Koa Session的使用的更多相关文章
- koa2实现session的两种方式(基于Redis 和MySQL)
		
一.基于MySQL的实现方式 这种方式需要安装koa-session-minimal和koa-mysql-session两个依赖. 执行 npm install koa-session-minimal ...
 - koajs项目之memcached实现session共享
		
在做nodejs服务的负载时要考虑到session共享的问题,一般常用的就是memcached方式实现的,本文主要介绍通过npm社区的几个模块轻松实现这个功能. 做koa的session一般会想到用k ...
 - koajs框架学习
		
目录: 概述 hello world 中间件 路由中间件koa-router body解析中间件koa-bodyparser 授之以渔 一.概述 koa 是由 Express 原班人马打造的,致力于成 ...
 - node项目实战-用node-koa2-mysql-bootstrap搭建一个前端论坛
		
前言 在学习了koa2和express并写了一些demo后,打算自己写一个项目练练手,由于是在校生,没什么好的项目做,即以开发一个前端论坛为目标,功能需求参照一下一些社区拟定,主要有: 登录注册 个人 ...
 - KoaHub平台基于Node.js开发的Koa的get/set session插件代码详情
		
koa-session2 Middleware for Koa2 to get/set session use with custom stores such as Redis or mongodb ...
 - koa 实现session登陆
		
在我们访问一些网站内部内容的时候,通常都会先验证我们是否已经登陆,如果登陆了就跳转到内容页面否则就跳转或者弹出登陆页面. 但是HTTP协议是没有状态的协议,无法标识一个用户的登录状态. 于是Cooki ...
 - koa 基础(十六)koa 中 session 的使用
		
1.app.js /** * koa 中 session 的使用 * 1.npm install koa-session --save * 2.const session = require('koa ...
 - Cookie、Session、JWT在koa中的应用及实现原理
		
目录 Cookie 重要属性 实现原理 cookie签名实现原理 注意事项 Session 实现原理 JWT 使用方式 组成 实际应用 实现原理 前端存储方式 cookie session local ...
 - koa简介
		
资料来源:http://javascript.ruanyifeng.com/nodejs/koa.htmlhttp://koa.bootcss.com/ 以下内容为摘抄,纯属做笔记加深印象.勿喷. 使 ...
 
随机推荐
- Python进阶----UDP协议使用socket通信,socketserver模块实现并发
			
Python进阶----UDP协议使用socket通信,socketserver模块实现并发 一丶基于UDP协议的socket 实现UDP协议传输数据 代码如下:
 - js数组【续】(相关方法)
			
一.数组的栈,队列方法[调用这些方法原数组会发生改变]var arr = [2,3,4,5,6];1.栈 LIFO (Last-In-First-Out)a.push() 可接受任意类型的参数,将它们 ...
 - nrm 工具的使用
			
一.什么是nrm? 这是官方的原话: 开发的npm registry 管理工具 nrm, 能够查看和切换当前使用的registry, 最近NPM经常 down 掉, 这个还是很有用的哈哈 顾名思义,就 ...
 - Gitlab配置webhooks实现自动化部署
			
Gitlab 自动化部署 原理介绍 配置gitlab当push动作的时候,访问服务器上的一个链接比如www.shenke.group/hook.php hook.php里面写着一行代码,会让服务器gi ...
 - 常识之外:全表扫描为何产生大量 db file sequential read 单块读?
			
原创 2016-07-05 熊军 Oracle 编辑手记:在理解Oracle技术细节时,我们不仅应该读懂概念,还要能够通过测试验证细节,理解那些『功夫在诗外』的部分,例如全表扫描和单块读. 开发人 ...
 - iManager微服务自定义上传数据的两种方法
			
背景 当数据量大时,通过浏览器上传可能速度较慢,可以使用以下两种方式进行数据导入. 方法一 1.访问k8s主页(31234端口) 找到所创建的微服务的命名空间(例如icloud-native-xxx) ...
 - UML——从类图到C++
			
简易软件开发流程 实践中,use case and description.class diagram与sequence diagram三者搭配,几乎是UML项目的基本类型,所以在分工或外包的设计文档 ...
 - django引用模板报错Template file 'index.html' not found
			
产生报错的原因在于index.html未被引用到,处理办法是在setting.py中加入app的name. 我这里app的名字叫sign,所以加入sign就好了 再次访问就好啦
 - AD10生成Gerber文件详细步骤
			
参考:https://wenku.baidu.com/view/faf0363c195f312b3069a5d2.html
 - Python入门篇-数据结构树(tree)的遍历
			
Python入门篇-数据结构树(tree)的遍历 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.遍历 迭代所有元素一遍. 二.树的遍历 对树中所有元素不重复地访问一遍,也称作扫 ...