token验证的前后端流程与操作

token验证的前后端流程

1.什么是token?
一般我们所说的的token大多是指用于身份验证的token,在计算机身份认证中是令牌(临时)的意思。

2.生成token
生成Token的解决方案有许多,常用的一种就是 Json Web Tokens
JWT标准的Tokens由三部分组成

  1. header:包含token的类型和加密算法
  2. payload:包含token的内容
  3. signature:通过密钥将前两者加密得到最终的token

后端部分(nodejs)

首先引入jsw模块

 cnpm  install  jsonwebtoken  -S

在文件中引入。

 var jwt = require("jsonwebtoken");

然后构建 生成token和验证token的两个模块

生成token接收两个参数(token的主题,token生命周期):代码如下
token验证的前后端流程与操作_第1张图片
验证token接收三个参数(token,token错误时的函数,token正确时的函数)
token验证的前后端流程与操作_第2张图片
(注意!!解密的key必须是生成token时的key。否则解密的token不对永远执行失败函数。)
最后导出这两个函数供其他文件使用:
导出token
在后端接口中添加生成的token给前端
如登陆成功后就生成一个token返回给前端:

res.send({
	state: true,
 	token:getToken.createToken(username,900),
	des: "登陆成功"
})

前端的每一次请求都验证token是否正确,正确就执行数据库操作,并且重新生成一个新的token返回给前端。否则抛回错误提示。
token验证的前后端流程与操作_第3张图片

前端部分(jquery)

在第一次交互后 使用本地存储 存储后端返回的token,在后面的请求中都带上token。
(ps:建议使用sessionStorage存储,比较符合需求)

下面是用户名密码验证通过后:先存储token,在进行页面跳转
token验证的前后端流程与操作_第4张图片
在post请求中传入参数-token(不带参数,后端没有收到正确的token就拿不到数据)

$.post("http://127.0.0.1:8081/all", { token: sessionStorage.token }, function (data) {
       if (data.state == false) {
                alert(data.des);
                return;
            }
       //下面是请求正确后的操作
       sessionStorage.token  =  data.token //存储后端返回的新token
       //接着操作......
 })

你可能感兴趣的:(前后端交互,token验证)