JWT从0到1,小白入门(JWT在vue前端中的使用)

这篇具有很好参考价值的文章主要介绍了JWT从0到1,小白入门(JWT在vue前端中的使用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JWT(JSON Web Token)

        

JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它是一个紧凑的、自包含的方式,用于在不同的应用程序之间安全地传输信息。

JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

1. 头部

头部包含两个重要的信息:token类型(通常为JWT)和所使用的算法(例如HMAC SHA256或RSA)。

例如:

{
  "alg": "HS256",
  "typ": "JWT"
}
 
2. 载荷

载荷就是JWT所要传输的信息。载荷包含一组声明,声明包含一些有关实体(通常是用户)和其他数据的信息。

例如:

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
 

常用的声明有:

  • iss:JWT的签发者
  • sub:JWT所面向的用户
  • aud:接受JWT的一方
  • exp:JWT的过期时间,这个过期时间必须要大于签发时间
  • nbf:定义在什么时间之前,该JWT都是不可用的
  • iat:JWT的签发时间
  • jti:JWT的唯一身份标识
3. 签名

签名使用头部和载荷,以及一个密钥来生成。签名用于验证JWT的完整性,以及验证发送JWT的实体是否为可信任的。

生成签名的过程如下:

  1. 将头部和载荷用Base64Url编码
  2. 连接编码后的头部和载荷,用句号 "." 分隔
  3. 使用密钥和所指定的算法对句号分隔后的字符串进行签名

例如,在使用HMAC SHA256算法时,签名如下所示:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)
 

其中,secret 表示密钥。

最终生成的JWT是一个长字符串,由三个部分用句号分隔组成,例如:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
 

JWT可以在HTTP请求的头部中进行传输,例如:

Authorization: Bearer eyjhbgci...sda
 

这样,API可以解析JWT并验证发送请求的实体身份,然后决定是否授权访问所请求的资源。

总结来讲是一种用于在Web应用程序之间安全传输信息的开放标准(RFC 7519)。它是一种基于

JSON的小型身份验证和授权标准,包含了在不同系统之间传递的信息,如用户身份信息和其他元数据。JWT由三部分组成:头部、有效载荷和签名。头部包含JWT的类型和使用的加密算法;有效载荷包含实际传输的信息;签名用于验证有效载荷是否被篡改。JWT可以使用在任何需要安全传输信息的地方,比如API调用和单点登录应用程序

JWT从0到1,小白入门(JWT在vue前端中的使用),前端

  为什么要使用JWT?

使用JWT的主要原因有以下几点:

1. 身份验证和授权:JWT是一种安全的身份验证和授权方式,因为它能够验证发送请求的用户身份,并授权用户访问所请求的资源。

2. 跨域通信:在跨域通信的场景下,使用JWT可以避免一些安全性问题,例如跨站点请求伪造(CSRF)。

3. 无状态:由于JWT本身包含了所有必要的信息,因此服务器不需要维护任何会话信息。这意味着JWT可以使服务器变得无状态,从而便于处理高负载的请求。

4. 可扩展性:JWT是一种开放的标准,因此可以轻松地扩展其功能,例如添加自定义声明、颁发和撤销访问令牌等。

5. 跨平台:由于JWT基于JSON,因此它可以在不同的编程语言和平台之间进行传输和解析。

JSON Web Token (JWT) 是在客户端和服务器之间安全地传输信息的一种方式。Vue作为一款前端框架,可以很方便地与JWT配合使用。

在vue中使用JWT

使用JWT需要以下步骤:

1. 安装JWT库

可以使用以下命令安装:

npm install jsonwebtoken
 

2. 在登录时生成JWT

在用户登录时,服务器生成JWT并将其发送给客户端。以下是一个示例代码:

const jwt = require('jsonwebtoken');
const secretKey = 'mysecretkey'; // 密钥,建议从环境变量中获取

// 在登录成功时生成JWT
const user = { id: 123, name: 'Alice' }; // 示例用户
const token = jwt.sign(user, secretKey, { expiresIn: '1h' }); // 生成JWT,设置过期时间为1小时
res.json({ token: token });
 

3. 将JWT存储在客户端

在接收到JWT后,客户端需要将其存储起来,以便在之后的请求中使用。可以使用localStorage、sessionStorage、cookie等方式存储。

// 在登录成功后将JWT存储在localStorage中
localStorage.setItem('jwt', token);
 

4. 附加JWT到请求头中

在之后的每个请求中,都需要将JWT附加到请求头中。通常使用Authorization头来传递JWT,具体格式为Bearer <token>,其中<token>是JWT的值。

// 在每个请求中附加JWT
const jwt = localStorage.getItem('jwt');
axios.defaults.headers.common['Authorization'] = 'Bearer ' + jwt;
 

5. 在服务器端验证JWT

在服务器端,需要验证传递过来的JWT是否有效。可以使用jsonwebtoken库进行验证。

const jwt = require('jsonwebtoken');
const secretKey = 'mysecretkey'; // 密钥,建议从环境变量中获取

// 验证JWT
const token = req.headers.authorization.split(' ')[1]; // 从Authorization头中提取JWT
jwt.verify(token, secretKey, (err, decoded) => {
  if (err) {
    // JWT验证失败,返回401状态码
    res.status(401).json({ message: 'JWT验证失败' });
  } else {
    // JWT验证成功,继续处理请求
    // decoded是JWT中存储的用户信息
    req.user = decoded;
    next();
  }
});
 

基于以上步骤,你可以很轻松地使用JWT在Vue应用中进行认证和授权。文章来源地址https://www.toymoban.com/news/detail-819323.html

到了这里,关于JWT从0到1,小白入门(JWT在vue前端中的使用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 零基础如何使用IDEA启动前后端分离中的前端项目(Vue)?

    点击File--Settings--Plugins--搜索vue.js插件进行安装,下面的图中我已经安装好了 安装node.js 可以去官网下载:安装过程就很简单,直接下一步就行  测试是否安装成功:要使用 管理员方式 打开命令行cmd         安装完成之后,打开命令行工具,输入node -v如果出现版本号,则说

    2024年02月11日
    浏览(49)
  • Vue入门六(前端路由的概念与原理|Vue-router简单使用|登录跳转案例|scoped样式|混入(mixin)|插件)

    路由(英文:router)就是对应关系 SPA指的是一个web网站只有一个唯一的一个HTML页面, 所有组件的展示与切换 都在唯一的一个页面内完成。 此时, 不同组件之间的切换 需要通过 前端路由 来实现 总结:在SPA项目中, 不同功能之间的切换 ,要 依赖于前端路由 来完成 通俗移动

    2024年01月22日
    浏览(38)
  • (一)前端环境搭建---基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建

    这里是为2023届学生完成一个管理系统(主要是后台)的连续更新博客。持续时间为20天,每日练习时间约2-3小时。默认已有系统开发的基础知识,如SpringBoot、数据库、HTML、CSS、JavaScript等,连载过程中,遇到细节问题也可以咨询。QQ群:1140508453。视频将在B站推出。 B站链接:

    2023年04月23日
    浏览(34)
  • Vue3入门指南:零基础小白也能轻松理解的学习笔记

    配置 node.js 15.0 命令行创建命令 npm init vue@latest cd 项目名 npm install npm run dev cnpm下载方法,更快 设置 VSCode 自动保存 官方教程 VSCode + Volar 格式化代码:Shift + Alt + F .vscode:VSCode工具的配置文件 node_modules:Vue项目运行的依赖文件 public:资源文件夹(浏览器图标) src:源码文件

    2024年02月06日
    浏览(35)
  • 前后端分离,使用vue3整合SpringSecurity加JWT实现登录校验

    前段时间写了一篇spring security的详细入门,但是没有联系实际。 所以这次在真实的项目中来演示一下怎样使用springsecurity来实现我们最常用的登录校验。本次演示使用现在市面上最常见的开发方式,前后端分离开发。前端使用vue3进行构建,用到了element-plus组件库、axios封装、

    2024年01月23日
    浏览(45)
  • 前端小白也能懂!实时消息小红点学会使用 RabbitMQ 推送消息

    在Web应用程序中使用实时消息推送可以为用户提供更好的体验。例如,在聊天室或社交媒体上,用户会看到其他用户发送的消息的实时更新,这提高了用户参与感,并为用户提供了方便。实时消息推送技术在许多场景中都是必不可少的,比如在线游戏,实时股票报价等。 实时

    2024年02月08日
    浏览(28)
  • 在springBoot中使用JWT实现1.生成token,2.接收前端token进行身份认证,3.通过token获取对象信息

    第一步:引入依赖 第二步:创建工具类 在until包下创建TokenUntil类,用于生成token 利用id,和password作为参数生成token JWt为这个包下的对象 第三步:token使用 在向前端返回的数据对象中添加token属性  是serve层中调用工具类方法将生成的token放到返回的数据中 注意:这里获取到

    2024年02月04日
    浏览(46)
  • 项目二:学会使用python爬虫请求库(小白入门级)

    上一章已经了解python爬虫的基本知识,这一次让我们一起来学会如何使用python请求库爬取目标网站的信息。当然这次爬虫之旅相信我能给你带来不一样的体验。 目录 一、安装requests 库 简介 安装 步骤 1.requests的基本使用3步骤 2.查看所使用编码 3.设置编码 二、认识requests请求

    2024年04月24日
    浏览(23)
  • ubuntu系统下如何使用vscode编译和调试#小白入门#

    编程环境:ubuntu系统为18.04.1,vscode版本为1.66.2 1、vscode安装完成后启动,在左侧externsions中搜索“简体中文”插件,并完成安装: 2、选择右下角齿轮形状的\\\"Manage\\\",选择第一项“command palette…“, 3、在右侧最上面输入栏选择\\\"configure display language”, 4、选择下拉中的第二项“zh

    2024年04月27日
    浏览(25)
  • 前端Vue入门-day07-Vuex入门

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 自定义创建项目 vuex概述 构建 vuex [多组件数据共享] 环境  创建一个空仓库 state 状态 1. 提供数据: 2. 使用数据: mutations  辅助函数 - mapMutations actions 辅助函数 - mapAc

    2024年02月14日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包