koa-session 记录当前会话内容

  最近做毕设需要在nodejs服务器下记录当前用户账号,所用的node框架是koa,所以相对应配套的用了koa-session,发现和之前学的session差不多,都是会话级别的。

一、session和token的区别

1、session鉴权流程

(1)用户登录的时候,服务端生成一个会话和一个id标识

(2)会话id在客户端和服务端之间通过cookie进行传输

(3)服务端通过会话id可以获取到会话相关的信息,然后对客户端的请求进行响应;如果找不到有效的会话,那么认为用户是未登陆状态

(4)会话会有过期时间,也可以通过一些操作(比如登出)来主动删除

2、token鉴权流程

(1)用户登录的时候,服务端生成一个token返回给客户端

(2)客户端后续的请求都带上这个token

(3)服务端解析token获取用户信息,并响应用户的请求

(4)token会有过期时间,客户端登出的时候也会废弃token,但是服务端不需要任何操作

3、两者区别

(1)session要求服务端存储信息,并且根据id能够检索,而token不需要。在大规模系统中,对每个请求都检索会话信息可能是一个复杂和耗时的过程。但另外一方面服务端要通过token来解析用户身份也需要定义好相应的协议。

(2)session一般通过cookie来交互,而token方式更加灵活,可以是cookie,也可以是其他header,也可以放在请求的内容中。不使用cookie可以带来跨域上的便利性。

(3)token的生成方式更加多样化,可以由第三方服务来提供

二、koa-session 使用方法

(1)首先在node环境下安装koa-session

 npm install --save koa-session

(2)在app.js文件下引入koa-session

 const session = require('koa-session');

(3)初始化koa-session

 1 app.keys = ['some secret hurr'];
 2 const CONFIG = {
 3 key: 'koa:sess',
 4 maxAge: 86400000, //失效时间,默认是一天。
 5     overwrite: true,
 6     httpOnly: true, //表示是否可以通过javascript来修改,设成true会更加安全
 7     signed: true, //这个涉及到cookie的安全性
 8     rolling: false, //是涉及到cookie有效期的更新策略
 9     renew: false,  //是涉及到cookie有效期的更新策略
10 };
11 app.use(session(CONFIG, app));

(4)在登录成功后记录当前账号

 ctx.session.id = req_data.id; //设置session id

 

token和session的区别参考简书地址:https://www.jianshu.com/p/8f4cc45d712e

posted @ 2019-03-27 20:49  三只小猪猪  阅读(1017)  评论(0编辑  收藏  举报