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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM