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

阿里巴巴吧网站怎么做河南自助建站seo公司

阿里巴巴吧网站怎么做,河南自助建站seo公司,jsp网站建设毕业设计,怎么做网业页目录 前言 JWT组成部分 JWT工作原理 在Express中使用JWT 安装JWT相关的包 导入JWT相关的包 定义密钥 登录成功后调用jwt.sign()生成JWT字符串 将JWT字符串还原为JSON对象 捕获解析JWT失败后产生的错误 结尾 前言 Session 认证机制需要配合 Cookie 才能实现。由于 Co…

目录

前言

JWT组成部分

JWT工作原理

在Express中使用JWT

安装JWT相关的包

导入JWT相关的包

定义密钥

登录成功后调用jwt.sign()生成JWT字符串

将JWT字符串还原为JSON对象

捕获解析JWT失败后产生的错误

结尾


前言

Session 认证机制需要配合 Cookie 才能实现。由于 Cookie 默认不支持跨域访问,所以,当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实现跨域 Session 认证。所以我们为了解决方便便捷的跨域问题,引入了JWT(jsonwebtoken)认证。

JWT组成部分

Header.payload.signature

也就是 头部.有效荷载.签名

在这三个部分中,只有payload部分才是真正的用户信息,经过加密生成的字符串。而其余两部分是安全性相关

JWT工作原理

用户信息通过Token字符串的形式保存在客户端浏览器中。服务器通过还原Token字符串的形式来认证用户的身份

在Express中使用JWT

安装JWT相关的包
npm i jsonwebtoken express-jwt

jsonwebtoken用于生成JWT字符串

express-jwt将JWT字符串解析还原成JSON对象

导入JWT相关的包
// 导入jwt相关的包
const jwt = require('jsonwebtoken')
const expressJWT = require('express-jwt')

允许跨域资源共享

/ 允许跨域资源共享
const cors = require('cors')
app.use(cors())

注意:需要先安装cors

npm i cors
定义密钥
const secretKey = '任意字符串'
登录成功后调用jwt.sign()生成JWT字符串

三个参数

jwt.sign(用户的信息对象,加密的密钥,配置对象有效token时间)

完整登录接口API

注意,需要解析post提交的表单数据

// 登录接口
app.post('/post',(req,res)=> {const userinfo = req.bodyif(userinfo.username !=='admin'||userinfo.password!=='000000'){return res.send({status:400,msg:'登录失败'})}const tokenStr = jwt.sign({username:userinfo.username},secretKey,{expiresIn:'60'})res.send({status:200,msg:'登录成功',token:tokenStr})
})

将生成的token字符串发送出去

使用postman模拟登录时发起的请求

可知已经成功登录并且生成了token字符串

将JWT字符串还原为JSON对象
// 将JWT字符串还原为JSON对象
app.use(expressJWT.expressjwt({secret:secretKey,algorithms:["HS256"]
}))

完整的获取对象代码

// 将JWT字符串还原为JSON对象
app.use(expressJWT.expressjwt({secret:secretKey,algorithms:["HS256"]
}))// get请求
app.get('/get',(req,res)=>{res.send({status:200,message:'获取用户信息成功',data:{username:req.auth.username}})
})

使用postman

注意:需要添加请求头authorization,并且value值需要在token值前面添加Bearer

捕获解析JWT失败后产生的错误
使用全局错误处理中间件,捕获解析 JWT 失败后产生的错误
app.use((err, req, res, next) => {// 这次错误是由 token 解析失败导致的if (err.name === 'UnauthorizedError') {return res.send({status: 401,message: '无效的token',})}res.send({status: 500,message: '未知的错误',})
})

使用postman模拟请求

由此可以得出捕获到了错误原因

结尾

这样JWT认证就这样介绍结束了,感谢观看

http://www.yayakq.cn/news/362332/

相关文章:

  • 网站开发硬件工程师待遇自己做网站详细流程
  • 做酒店网站有哪些目录长春网站建设多少钱
  • 有域名怎么建设网站蚌埠网站排名
  • 免费手机网站空间申请单位网站建设的请示
  • 网站推广的技巧和方法高中学校网站模板
  • 使用公网ip做网站地址做网站的服务器用什么系统
  • 怎么做套版网站雄安免费网站建设公司
  • 云南微网站搭建上海关键词优化推荐
  • 做网站哪个好wordpress活动插件
  • 网站备案系统登录公司网站建设哪家公司好
  • 微信链接网页网站制作wordpress换域名搬家图片不显示
  • 做网站完整视频开发公司地下停车位买卖协议书范本
  • app下载网站免费公司企业形象设计
  • 网站可以做话筒台标吗青岛优化网站关键词
  • 微网站自助建设网站如何做分站
  • 网站自动生成网页修改wordpress后台路径
  • 网络直播网站建设衡水做网站多少钱
  • 网站建设页面图wordpress 多次登录
  • 承德哪里做网站想做一个网站
  • 门户网站的运营企业做哪个网站好
  • 深圳公司网站备案郑州市建筑工程信息网
  • 西安企业网站建设高新区网站做短视频业务许可
  • 学会网站建设方案微信公众号调用WordPress
  • 天津智能网站建设软件开发模型比较
  • 如何增加网站的访问量宝安建网站的公司
  • 深圳做网站的公司 cheungdom网站建设中图片是什么
  • 网站内容排版设计模板企业做网站需要准备什么资料
  • 做视频课程网站17网一起做网店普宁池尾商圈
  • iis网站权限wordpress首页div
  • 网站域名解析教程学做网站买什么样的书