博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JWT(token) 的使用
阅读量:6924 次
发布时间:2019-06-27

本文共 1741 字,大约阅读时间需要 5 分钟。

1.什么是token

token是一个令牌,是前后端开发时的一个验证工具,(就是一个字符串)

2.token的使用流程

1.前端向后端传递用户名和密码 2.后端将接收到的的用户名和密码进行核实 3.后端核实成功后会,返回给前端一个token(或者直接将token保存在cookie中); 4.前端得到token 并对其进行保存 5.如果前端请求隐私的接口(比如需要登陆后才能查看商品的详细信息),则需要传递保存的token(进行ajax请求时,将信息放在请求头中) 6.后端对其进行验证,如果token错误,则请求不到数据,返回给前端相应的提示           如果token验证正确,则 获取相应的数据,并返回给前端

3.JWT的构成

JWT是由三部分构成,将这三段信息文本用链接构成了JWT字符串,    header + payload +secret = 加密的字符串 1.header 头部 2.payload 负载-------写相关的信息   {
    user:"签发者",     exp:"token过期时间"//必须大于签发时间   } 3.secret 密钥------用来进行jwt的签发和jwt的验证,它就是你服务端的私钥,在任何场景都不应该流露出去

4.后端JWT的构建

  // 1.下载包        npm install jsonwebtoken --save-dev    // 2.引入        var JWT = require("jsonwebtoken"); //负载信息    let payload = {        user:"sun",        // exp:"1000 * 60"//单位 ms    }    //密钥     let secret = "123456"; //生成token,exporesIn为过期时间,单位:ms/h/days/d  eg:1000, "2 days", "10h", "7d"    let token= JWT.sign(payload,secret,{expiresIn:"1h"}) //将token保存在cookie中    res.cookie("token",token);

5.前端请求保密性的信息(比如:必须登录后,才能查看商品的详细信息),发送JWT

  //获取cookie,    var token = $.cookie("token");    //发起ajax请求,将token发送到后端    $.ajax({        type: "get",        url: "/goods",        //将信息保存在请求头中        headers: {            auth: token        }    })

6.后端验证JWT

//获取前端传来的tokenlet token = req.headers.auth;  JWT.verify(token, "密钥", (err, decoded) => {    if (err) {            //验证失败            //console.log("令牌失效");            res.json({                status:false,                info:"令牌失效"            })        } else {            //验证成功            //获取前端需要的相应数据        //返回给前端相应的信息         res.json({                status:true,                info:请求的数据            })        }    })

 参考:https://www.npmjs.com/package/jsonwebtoken

转载于:https://www.cnblogs.com/SRH151219/p/10387036.html

你可能感兴趣的文章
代码自解释不是不写注释的理由
查看>>
.NET或将引入类型类和扩展
查看>>
Azure Service Fabric正式发布
查看>>
GitLab公布关于开发者趋势的问卷调查结果
查看>>
无痛学会各种 2 的 Vue2+Vuex2+Webpack2 前后端同构渲染
查看>>
回归PHP(二)——微信接入支付相关
查看>>
容器化开发环境 - Dockerize
查看>>
【leetcode】191. Number of 1 Bits 正整数中的bit位为1的个数
查看>>
仿易信引导页面
查看>>
关于libevent的事件持续化EV_READ | EV_PERSIST
查看>>
React Native:那些开始之前应该知道的知识点
查看>>
打造高效个性Terminal(一)之 iTerm
查看>>
[转]:xmake高级特性之自定义task任务
查看>>
隐写术
查看>>
在实践中应用 RxSwift
查看>>
Sass 与 SCSS 是什么关系?
查看>>
前端-适配器模式
查看>>
GC的三大基础算法
查看>>
zTree分批异步加载方式下实现节点搜索功能
查看>>
Spritekit 转 Unity2D 上手指引
查看>>