微服务实战系列之Token

news2025/1/11 8:59:37
前言

什么是“Token”? 它是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便返回给客户端;以后客户端只携带此Token请求数据即可。

简言之,Token其实就是用户身份的另一个标识而已,取代了繁琐的用户和密码校验,同时也减轻了服务器的压力,减少频繁的数据库交互,使服务器更加健壮。

那么我们在应用中如何使用token呢?且听博主分解。

在这里插入图片描述


流程原理
1. OAuth2.0

我们在熟悉Token之前,先了解一下“OAuth2.0”,各位盆友可能有疑问,这又是什么东东?能干嘛?

“OAuth(Open Authorization)”是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。
目前已开放的标准是2.0,于是我们通常简称为“Oauth2.0”协议。

在这个协议或标准基础之上,提供了4种授权模式,今天我们重点讲其中一种:“授权码模式”

授权码(authorization code)模式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。

这种方式目前是最常用的模式,兼顾安全与性能。同时令牌存储在后端,在前后端分离场景下,可以避免令牌泄漏。

2. Token(令牌)

有了前面的背景知识,是不是大概也理解了OAuth的意义了?接下来我们看Token是怎么回事,它有哪些作用?

  • Token完全由应用程序进行管理,所以它可以避开同源策略;
  • Token可以避免CSRF(跨站请求访问)攻击;
  • Token可以是无状态的,可以在多个服务器之间共享;
  • 使用Token减轻服务器的压力,减少频繁的查询数据库。

所以,从以上作用来看,还是达到了“降本增效”的目的,这也正反映当代世界的一个主题:“节能减排,绿色环保”

在这里插入图片描述

应用实践

到此为止,大家是否已学习了到关于Token的理论知识呢?接下来我们看在实际应用中,应该如何处理。

1. appKey/appSecret

首先看一组名词解释:

“appKey”:名为应用标识,通常代表客户身份,即客户端的唯一标识。
“appSecret”:名为应用密钥,通常与appK组合配对使用,用于客户身份认证。

通常appKey作为公钥存在,可以用于数据传输;而appSecret作为私钥存在,只能在服务端存储,禁止网络传输。

从发展趋势而言,以“appKey/appSecret”组合使用,可以灵活定义客户端使用权限,从而提高了用户管理能力,这也正是当前建设OpenAPI的基础。

2. 生成Token

当客户收到一组“appKey/appSecret”,便可通过token服务获取授权认证通过后,服务端颁发的令牌Token。同时Token也有时间属性,根据实际情况,进行有效期设置。
请看Token调用示例:

{
    "appKey": "c5fc1ce17ea311eb02628fce294",
    "appSecret": "f0310ba586bb0e73c375"
}
{
    "code": 200,
    "msg": "认证成功",
    "data": {
        "access_token": "eyJhbGciOiJIUzUxMiJ9.eyJ1c2VyX2lkIjoiRklOMSIsInVz",
        "expires_in": 120
    }
}
3. 使用Token

有了Token这块金字“腰牌”,我们可以一定程度上,掌握了主动,在有限的时间内,可以自由支配授权的资源。那如何支配呢?即需要的时候,主动出示Token即可。此时,我们把镜头转向如何出示的画面:
在这里插入图片描述
各位盆友,谜底已揭晓,学到了吧?通过Header传参实现Token的出示和后续的服务认证。此刻,我们已经一只脚踏入了客户的家门。


好了,夜深了,博主也该休息了。今天分享到这里,欢迎路过的、拿凳的、嗑瓜子的盆友们,分享与讨论。
咱们有空接着聊~

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

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

相关文章

VBA_MF系列技术资料1-222

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-04属于定…

Rxswift(1)

基础用法 数据绑定核心Observerable 可监听序列 数据绑定 平常的写法 let image: UIImage UIImage(named: ...) imageView.image image绑定的写法 //可监听序列 let image: Observable<UIImage> ... //imageView.rx.image 观察者 image.bind(to: imageView.rx.image…

python爬取穷游网景点评论

爬取穷游网的景点评论数据&#xff0c;使用selenium爬取edge浏览器的网页文本数据。 同程的评论数据还是比较好爬取&#xff0c;不像大众点评需要你登录验证杂七杂八的&#xff0c;只需要找准你想要爬取的网页链接就能拿到想要的文本数据。 这里就不得不提一下爬取过程中遇到的…

echarts双轴右边的轴刻度不显示

图表单轴的时候&#xff0c;yAxis 和 series 是一个对象&#xff0c;但是当双轴显示的时候&#xff0c;yAxis 和 series 就都是一个数组里面包含两个对象&#xff0c;如果是多轴&#xff0c;就是多个对象 看下代码&#xff0c;关键代码 yAxisIndex: 1, 多轴的时候需要指定ind…

【2023春李宏毅机器学习】快速了解机器学习基本原理

文章目录 机器学习约等于机器自动找一个函数 机器学习分类 regression&#xff1a;输出为连续值classification&#xff1a;输出为一个类别structured learning&#xff1a;又叫生成式学习generative learning 生成有结构的物件&#xff08;如&#xff1a;影像、句子&#xf…

matplotlib 绘制双纵坐标轴图像

效果图&#xff1a; 代码&#xff1a; 由于使用了两组y axis&#xff0c;如果直接使用ax.legend绘制图例&#xff0c;会得到两个图例。而下面的代码将两个图例合并显示。 import matplotlib.pyplot as plt import numpy as npdata np.random.randint(low0,high5,size(3,4)) …

【Unity】XML文件的解析和生成

目录 使用XPath路径语法解析 使用xml语法解析 XML文件的生成 XML文件是一种常用的数据交换格式&#xff0c;它以文本形式存储数据&#xff0c;并使用标签来描述数据。解析和生成XML文件是软件开发中常见的任务。 解析XML文件是指从XML文件中读取数据的过程。在.NET中&#…

【入门篇】1.2 Redis 客户端之 Jedis 详解和示例

文章目录 1. 简介2. Jedis的依赖下载Jedis导入Jedis jar包配置Redis服务器的地址和端口 3. Jedis 的基本操作连接 Redis 服务器设置和获取字符串类型的键值对判断键是否存在删除键设置键的过期时间 4. Jedis 的数据类型操作字符串类型列表类型集合类型哈希类型有序集合类型 5. …

指针传2(续集)

近期的天气是真的冷啊&#xff0c;老铁们一定要照顾好自己呀&#xff0c;注意防寒保暖&#xff0c;没有你们我怎么活啊&#xff01; 上次的指针2的末尾&#xff0c;给大家分享了两个有趣的代码&#xff0c;今天就先来讲一讲那两个代码&#xff1a; 两个有趣的代码&#xff1a;…

Pandas 将DataFrame中单元格内的列表拆分成单独的行

使用 explode 函数 import pandas as pddata {month: [1, 2],week: [[i for i in range(2)], [i for i in range(3)]]} df pd.DataFrame(data) print(df)df df.explode(week) print(df)

Spring3新特性:graalvm打包Springboot+Mybatis

Spring3新特性 graalvm打包SpringbootMybatis 项目源代码 https://github.com/cmdch2017/SpringNative_Graalvm_Mybatis 如何安装与运行 安装graalvm与配置环境 首先安装步骤参考这篇博客 https://blog.csdn.net/weixin_38943666/article/details/129505945 其次如何处理…

【Python大数据笔记_day10_Hive调优及Hadoop进阶】

hive调优 hive官方配置url: Configuration Properties - Apache Hive - Apache Software Foundation hive命令和参数配置 hive参数配置的意义: 开发Hive应用/调优时&#xff0c;不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率&#xff0c;或帮助定位问…

图像生成colab集合

不过colab会做检测&#xff0c;一般文生图算法是基本很难跑起来的。 https://github.com/camenduruhttps://github.com/camenduru这哥们有很多colab。 1.stable-diffusion-webui https://colab.research.google.com/drive/1Iy-xW9t1-OQWhb0hNxueGij8phCyluOh#scrollTow3KNZ-…

变长子网划分问题的二叉树解法

计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码&#xff0c;都是前缀编码的本质&#xff08;变长操作码的二叉树解法我还在琢磨中&#xff09; 【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点&#xff1a; 【例】现将一个IP网络划分成…

redis运维(十)列表

一 列表 强调&#xff1a; 知道原生redis具备的能力,以便后续API调用 ① 基础概念 备注&#xff1a; 单个list最多2^32-1个元素 列表操作常用命令,涉及&#xff1a;CURD ② lpush 左插入 说明&#xff1a; 如果key不存在就会初始化,否则就是插入元素备注&#xff1a; l…

C++ string类(一)

1.C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符 OOP(Object Oriented Programming)的思想&#xff0c;而且…

Java后端工程师有福啦,CSDN里找到宝藏

目录 一、说明 二、操作步骤 一、说明 CDSN也有系统的java学习资料&#xff0c;有事无事翻翻挺好。 二、操作步骤 1、在CSDN首页顶端左边&#xff0c;点【学习】 2、在【学习】的页面&#xff0c;往下滑&#xff0c;找到【职业路线】 3、java后端工程师【入门版】【进阶版】…

WhatsApp账号被封?看看是不是你的原因!

WhatsApp经常封号是一个难题&#xff0c;这一篇将为你详细介绍WhatsApp封号原因&#xff0c;以及如何防封。 封号原因 首先我们分情况来判定封号原因&#xff0c;WhatsApp封号一般有以下几种情况&#xff1a; 1、一注册就封 许多小伙伴账号刚注册什么都没动&#xff0c;就遭…

Pr怎么消除人声?三个方法解决!

在一些情况下&#xff0c;消除人声可以保护个人隐私。例如&#xff0c;在公共场所录制视频或音频时&#xff0c;如果不需要记录人声&#xff0c;可以通过技术手段消除人声&#xff0c;以保护个人隐私和信息安全。下面就向大家介绍三种方法详细的操作步骤。 方法一&#xff1a;使…

会说话,情商高:职场人士必看的情商口才提升攻略

在职场上&#xff0c;口才和情商是非常重要的软实力。能言善辩&#xff0c;与人交流得心应手&#xff0c;往往可以帮助我们更好地完成工作任务&#xff0c;并获得更多的机会和提升。那么&#xff0c;如何才能培养出好的口才和高情商呢?本文将从以下几个方面给大家提供一些建议…