传统的Session验证
起初的验证方式是存在于服务器的,用户登录进来以后,服务器判断成功,将数据存进session里面,向用户返回一个sessionID。这样的弊端是,假如用户基数特别大,每登录一个用户,就要存储一条,对服务器的内存压力比较大。
基于Token的验证方法
基于Token的验证方法是无状态的,因此我们就不用把信息存在服务器中了。
Token可以通过请求头传输,所以他可以在任何一种http请求中被发送到服务器中。
Token的验证流程
客户端发送用户、密码到服务器。
服务器接收到信息之后和数据库进行比对,验证成功后,生成一段有时效的Token字符串,向客户端返回登陆成功信息以及Token字符串。
客服端接收到信息,将Token存储在Local Storage或者Cookies中。
客服端再向服务器发送请求时,将Token放在请求头中。
服务器先解析请求头中的Token,如果解析成功,那么就进入业务逻辑中,如果不成功返回错误信息。
nodeJS(express) + jwt(jsonwebtoken)
首先安装 jsonwebtoken
npm install jsonwebtoken -S
然后在服务器中创建一个js文件,可以自行命名,我在这里命名为jwt.js
// 引入模块依赖
const fs = require('fs');
const path = require('path');
const jwt = require('jsonwebtoken');
// 创建 token 类
class Jwt {
constructor(data, key, minute) {
this.data = data;
this.keyword = key;
this.minute = minute || 30
}
//生成token
generateToken() {
let data = this.data;