当前位置: 首页 > news >正文

jwt原理

package.json

bin:{

'zj':"./bin/www.js"

}

npm link l链接到当前哦配置的目录

www.js中写

#!/usr/bin/env node

cookie session

cookie的问题每次都带着浪费带宽

jwt出现了

token 签名

不能给客户端敏感信息

sha256 RSA

用来签名的密码

发给客户端也不存用户信息

下次客户端请求的时候带上内容和签名

服务器收到客户端再次传来的结果 根据内容再次签名 和刚才的签名一样 用户确实存在

不需要每次都带上token 节约流量 服务器不需要占用内存 信息也相对于可靠一些

不需要跨服务端 域名内可以共用 多端共用

jwt 三个部分 用. 点隔开

 

头部{typ:'JWT',alg:"HS256",}

Payload 负载 需要额数据

{"id":,userName,address}

Signnature 签名 。 xxxxqqq

base64.xxxqqq

base64a.base64.base64b.base64c

 

客户端收到会存到localstorage中

用到的时候拿出来

express实现jwt权限校验

用户登录后可以进入订单页

/order ===login

bodyparser 解析请求体

jwt-simple

robo3t 可视化工具

 

let jwt =require('jwt-simple')

// 产生一个签名结果

密码不放进去

let token = jwt.encode(user,secret)

jwt.decode

密钥 定死一个常量

secret = 'secret'

res.json({

code:0,

data:{

token

}

})

 

header头带过来

再次生成后的 jwt.encode(user,secret)内容和带过来的不一样 那么就是不存在

请求头

authorization:Bearer token

req.headers['authorization']

取的头都是小写 发的都是大写

app.use()

// app.get()

app.use 再app.get上面的话 下面的get 都先执行中间件

app.get(''/order",auth,functionn(req,res){

 

})

// 针对某一条路由做中间件

查询用户

decode 可以解密出来就是有用户 解密不出来就是没有用户

// 中间件里面设置

res.setHeader('Access-Conntroll-Allow-Origin','*')

res.setHeader('Access-Conntroll-Allow-Headers','Content-type,Authorization')

res.setHeader('Access-Conntroll-Allow-Methods','GET,POST,DELETE,OPTIONS')

if(req.method === 'OPTIONS'){

res.end()

} else {

next()

}

 

// 跨域头

vue3.0安装完cli 直接vue create xxname即可

axios.defaults.baseURL='http://localhost:3000'

 

跳转401 登录页面

router.history.push('/login')

Not Arrowed

 

 

// 自己实现一个jwt.js . 加密解密的具体实现

jwt-simple

let jwt = {

decode(token,secret){}

encode(payload,secret){}

}

 

 

相关文章:

  • 我的BCB情缘
  • koa session 签名 cookie等
  • 作了Redhat Linux的基础课测试,刚好达到及格的标准,还是要多加学习啊!
  • express精简
  • react hooks1
  • CC2e:《代码大全(第2版)》集萃
  • js 数组API之every、some用法
  • 整理一个ANT在J2EE项目中的应用,含预编译JSP和打包WAR/EAR文件!
  • Taro解决低版本内核 兼容ES6语法问题Object.entries is not a function
  • git add . 增加所有文件到缓存区 git diff 什么也没有 因为无法比较差异 如果git add 某一个文件 则可以查看变动文件
  • 英语标准答案
  • react hooks 之 useState
  • react hooks useEffect
  • 去掉 deplate(Viki) 生成的 html 文件行尾多余的空格。
  • react hooks useContext
  • .pyc 想到的一些问题
  • canvas 五子棋游戏
  • JS题目及答案整理
  • maven工程打包jar以及java jar命令的classpath使用
  • SpringBoot 实战 (三) | 配置文件详解
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 基于axios的vue插件,让http请求更简单
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 判断客户端类型,Android,iOS,PC
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • HanLP分词命名实体提取详解
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​如何在iOS手机上查看应用日志
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (1)Android开发优化---------UI优化
  • (5)STL算法之复制
  • (ZT)薛涌:谈贫说富
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (转)http协议
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)winform之ListView
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET Framework .NET Core与 .NET 的区别
  • .Net小白的大学四年,内含面经
  • 。Net下Windows服务程序开发疑惑
  • ;号自动换行
  • @javax.ws.rs Webservice注解
  • @Pointcut 使用
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [2]十道算法题【Java实现】
  • [4.9福建四校联考]
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [Bugku]密码???[writeup]
  • [C++打怪升级]--学习总目录
  • [C++随笔录] 红黑树
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本
  • [hive] sql中distinct的用法和注意事项