token的使用

news2025/1/17 0:54:45

一:什么是token及token的作用?

1.什么是token?

Token是首次登录时,由服务器下发,作为客户端进行请求时的一个令牌。当请求后台方法时,用于身份验证

当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码

2.Token的作用?

Token完全由应用程序进行管理,所以它可以避开同源策略
Token可以避免CSRF(跨站请求访问)攻击 

 简单的说:后端生成token 会有一个签名(基本上后端自己设计)  避免外部攻击!

Token可以是无状态的,可以在多个服务器之间共享
使用Token减轻服务器的压力,减少频繁的查询数据库

3.Token的身份认证过程!

1.用户通过用户名和密码发送请求

2.程序进行验证

3.程序会返回一个字符串(就是token)给客户端

4.客户端进行储存token,并且用于每一次请求

5.服务器验证并且返回想要的数据

现在知道token是干什么的了,那么怎么使用token呢?

 二:JWT介绍

1.什么是JWT 

JWT,全称为JSON Web token,是用于对应用程序上的用户进行身份验证的标记。也就是说,使用JWT的应用程序不再需要保存有关其用户的cookie或session数据

* 在身份验证过程中, 当用户使用其凭据成功登录时,将返回JWT,客户端会将其保存到本地存储中,而后每次请求都会携带

* JWT本质上就是一个经过加密处理与校验处理的字符串,

它由三部分组成:头信息.有效载荷.签名
    头信息: 一般由两部分组成,Token类型和散列算法(HMAC、RSASSA、RSASSA-PSS等)

{
   "typ": "JWT",
  "alg": "HS256"
}


    有效载荷: 一般里面可以存储自定义的实体的信息

payload(载荷)信息存放的是Claims声明信息。载荷其实就是自定义的数据,一般存储用户Id,过期时间等信息。也就是JWT的核心所在,因为这些数据就是使后端知道此token是哪个用户已经登录的凭证。而且这些数据是存在token里面的,由前端携带,所以后端几乎不需要保存任何数据。


    签名: 用于保证消息在传输过程中不会被篡改

signature(签名)需要使用编码后的header和payload以及一个秘钥,使用header中指定签名算法进行签名。

 2.JWT的流程

 3.项目中使用JWT

1.依赖

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

 2.封装工具类 创建和解析token(调用)

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Map;

public class JwtUtil {
   // 创建token
    public static String createToken(Long id,String secret) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("id", id);
        return Jwts.builder()
                .setClaims(map) //设置响应数据体
                .signWith(SignatureAlgorithm.HS256, secret) //设置加密方法和加密盐
                .compact();
    }


    // 解析token
    public static Map parseToken(String token,String secret) {
        return Jwts.parser().setSigningKey(secret)
                .parseClaimsJws(token)
                .getBody();
    }

}

最后token 相当于这玩意:

 "token": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MTI4fQ.BUsv0fc8qI2Yx02vEDLUR1JSc-FV5Sr8NuqsXIKPiNg"

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1013 Battle Over Cities

目录 Input Specification: Output Specification: Sample Input: Sample Output: 一、题目大意 二、思路 三、代码 It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/to…

138.深度学习分布式计算框架-1

138.1 PaddlePaddle PaddlePaddle是百度开源的一个深度学习平台PaddlePaddle为深度学习研究人员提供了丰富的API&#xff0c;可以轻松地完成神经网络配置&#xff0c;模型训练等任务。官方文档中简易介绍了如何使用框架在 线性回归识别数字图像分类词向量个性化推荐情感分析语…

2.14 分享9个高吸睛小红书首图制作技巧,要认真学哦!【玩赚小红书】

在小红书里&#xff0c;推荐的图片比例是3:4、1:1、4:3。 做图的时候就要提前调整好比例&#xff0c;免得上传被自动裁剪掉重要信息。竖屏最常用&#xff0c;因为比较“霸屏”&#xff0c;展现的信息空间比较大。当然&#xff0c;选哪个比例还是看个人偏好&#xff0c;尽量保持…

2022年C++面试题万余字汇总【面试官常问】

2022年C面试题【常问重点问题】1、请你说说 GET 和 POST 的区别&#xff1f;2、简述一下 C 中的多态?3、说一说进程有多少种状态&#xff0c;如何转换?3、请你说说指针和引用的区别4、简述一下虚函数的实现原理5、说一说 vector 和 list 的区别&#xff0c;分别适用于什么场景…

剪映PC版英文字幕翻译最新方法(中英互译)

原文地址 剪映PC版英文字幕翻译最新方法&#xff08;中英互译&#xff09; – 方包博客 – java|python|前端开发|运维|电商|ui设计剪映PC版英文字幕翻译最新方法&#xff08;中英互译&#xff09;https://www.fang1688.cn/ziyuan/3431.html 我的是剪映 v3.3.0版本。旧版不支持…

Omorn - NJ301-1100 AND NX102-9000 - CIP - UCMM 通讯

目录 Omorn - NJ301-1100 AND NX102-9000 - CIP - UCMM 通讯 测试案例IP 创建变量类型 指令编写加数据测试 Omorn - NJ301-1100 AND NX102-9000 - CIP - CLASS3 通讯 Omorn - NJ301-1100 AND NX102-9000 - CIP - UCMM 通讯 说明&#xff1a; 1、NJ的网络通讯指令要有CIP…

【C语言入门数据结构】顺序表

&#x1f648;个人主页&#xff1a;阿伟t &#x1f449;系列专栏&#xff1a;【C语言–大佬之路】 &#x1f388;今日心语&#xff1a;你所看到的惊艳&#xff0c;都曾被平庸所历练。 前言&#xff1a;继【时间复杂度和空间复杂】度之后&#xff0c;本章我们来介绍数据结构中…

docker能干什么以及基本名词解释

docker能干什么以及基本名词解释 docker能干什么&#xff1f;比较docker和虚拟机的不同DEVOps (开发&#xff0c;运维)基本名词解释docker能干什么&#xff1f; 比较docker和虚拟机的不同 传统虚拟机&#xff0c;虚拟出一条硬盘&#xff0c;然后再这个系统上安装和运行软件。…

1.3-1.7 测度理论

测度理论 (Durrett) 第五版 个人笔记 答案 Durrett高等概率论教材 (Probability) 攻读概率及统计/机器学习应用方向博士学位. 1. Measure Theory Probability SpacesDistributionsRandom VariablesIntegrationProperties of the IntegralExpected ValueProduct Measures, Fub…

python实现科研通定时自动签到

1 新建虚拟环境 python -m venv venv2 激活环境 3 官网下载edgedriver.exe Edge WebDriver链接在此&#xff0c;下载对应的浏览器的版本&#xff0c;然后改名为msedgedriver.exe放在\venv\Scripts下面。 main.py代码如下&#xff1a; from selenium import webdriver from…

动态规划——完全背包问题(C++实现)

题目描述&#xff1a; 问题分析&#xff1a; 完全背包问题和01背包问题的不同点&#xff1a; 简单01背包中是从N个物品里选&#xff0c;每个物品只能用1次&#xff0c;完全背包则不同&#xff0c;每个物品可以用无限次。 01背包&#xff1a; 如果物品能放入背包&#xff08…

PIC单片机1——按钮测试

#include "p18f458.h" #define Button PORTBbits.RB0 #define Led PORTCbits.RC0 void delay() { unsigned char i,j; for(i0;i<255;i) for(j0;j<255;j) ; } void main() { TRISBbits.TRISB01;//B0输入 TRISCbits.TRISC00;//C0输出 Led1;…

[计算机毕业设计]大数据疫情分析与可视化系统

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过…

Unload data from Databend | 新手篇(4)

上篇我们讲了怎么利用 copy 命令借助于 Stage 把数据加载到 Databend 中&#xff0c;Databend 致力于构建一个完整的数据湖&#xff0c;也需要支持用户把数据从 Databend 中取走&#xff0c;这里 Databend 给三种可以把数据取走的办法&#xff1a; External table 把数据存储在…

fiddler使用教程

Fiddler教程 Fiddler简介 Fiddler是一款网络代理调试工具&#xff0c;可以将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作&#xff0c;是目前最常用的http抓包工具之一。 Fiddler工作原理 Fiddler通过改写HTTP代理&#xff0c;来监控并截取数据。当浏览器访…

2022年第十二届APMCM亚太地区大学生数学建模竞赛--思路代码

2022年第十二届APMCM亚太地区大学生数学建模竞赛--思路&代码报名时间节点往年真题赛题&翻译题目思路A题——赛题解读&解题思路B 题——赛题解读&解题思路C题——赛题解读&解题思路报名 官方网址&#xff1a;http://www.apmcm.org 报名网址&#xff1a;http…

Similarity and Matching of Neural Network Representations 论文阅读笔记

这是NIPS2021的一篇论文&#xff0c;文章主要是探究了通过一个stiching layer将两个已训练的不同初始化的相同结构的网络的某一层进行匹配的可能性。 前言 作者对 “什么情况下两个表征是相似的&#xff1f;” 提出了一个新的问题&#xff1a;“如果我们知道两个表征是相似的&…

Qt 停靠布局QDockWidget使用

基本使用 QDockWidget是一个可以停靠在QMainWindow内的窗口控件&#xff0c;它可以保持浮动状态或在指定位置作为子窗口附加到主窗口中。停靠窗口QDockWidget类是应用程序中经常用到的&#xff0c;设置停靠窗口的一般流程如下。 创建一个QDockWidget对象的停靠窗体。设置此停…

Kafka是什么?Rocket MQ在Spring Boot中怎么整合使用/Kafka在SpringBoot中简单配置使用

写在前面&#xff1a; 继续记录自己的SpringBoot学习之旅&#xff0c;这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 3.5.4.5 SpringBoot整合RocketMQ 3.5.4.5.1 Rocket…

怎么设计个性时尚的班服?一起来看看莱佛士学生的设计

校园时期&#xff0c;每个学生其实都拥有一次做“设计师”的经历&#xff0c;那就是为自己的班集体设计班服&#xff01; 莱佛士设计学院就曾与新加坡国立大学Yong Loo Lin 医学院合作&#xff0c;进行过一场别开生面的校园文创设计大赛&#xff0c;其中不仅有班服设计&#x…