关于token:声网-Token-鉴权机制以及常见的问题

Token鉴权是什么?Token也称为动静密钥,是在退出频道时用于校验用户权限的一组字符串;鉴权是指在用户拜访你的零碎前,对其进行身份校验。用户在应用声网服务,如退出音视频通话或登录信令零碎时,声网会应用 Token 对其鉴权。 咱们为这种形式提供了一个较为形象的比喻,即: 某个展览馆须要游客实名认证后,获取专属入场券才可参观。游客在实现实名认证后能够获取到具备有效期限度的专属入场券,在进场时提供在有效期内的入场券,方能进场。其中: ● 展览馆相当于声网的服务,即音视频频道或信令零碎等;●专属入场券相当于 Token;●实名认证步骤相当于联合 声网 AppID、频道号、用户 ID 等信息 获取到专属 Token 的步骤;●进场时校验入场券相当于鉴权,即校验 Token 是否和 声网 AppID、频道号、用户 ID 等信息匹配,且在有效期内。 声网的产品和服务中大部分采纳Token 鉴权的形式。上面,咱们针对如何生成和应用 Token,以及 Token 鉴权中常见的问题进行具体的解说。 如何生成和应用Token?2.1 Token 鉴权原理在理解如何生成和应用Token 前,须要先理解 Token 鉴权的原理。 如图所示,共分为9个步骤: 1.客户端依据须要,向 app 服务端申请 Token2.App 服务端生成并返回 Token3.客户端以 UID、频道名以及获取到的 Token 退出频道4.声网平台读取该 Token 中蕴含的信息,并进行校验5.客户端收到退出频道胜利回调,并获取用户 UID6.Token 最大有效期为 24 小时。当即将过期时,客户端会收到 Token 行将过期的回调7.此时,如果客户端须要持续进行音视频互动,须要申请新的 Token8.App 服务端生成并返回 Token9.客户端更新 Token这个过程中,用户须要自行实现步骤1、2、3、7、8、9 的代码逻辑。 其中,对应的Token 蕴含以下信息: ● 你在声网控制台创立我的项目时生成的 App ID● 频道名● 用户 ID● 用户权限,如是否能发流或收流● Token 的过期工夫 2.2 申请与生成Token能够看到,在用户退出频道前,客户端须要先向服务器申请Token,并在 服务器 生成 Token,且 Token 必须与 须要退出频道的用户所对应的 AppID、频道名、用户 ID(UID)信息、用户权限(是否能发流或收流) 一一对应,并且确保生成的 Token 在有效期内。而后能力以 UID、频道号 和 Token 退出对应频道。 向服务器申请Token,能够通过向服务器发送 GET 申请等形式自行实现,以下文章以供参考: ● 部署 Token 服务器(官网文档):https://docs.agora.io/cn/live-streaming-premium-4.x/token_ser...●用Token-Flutter 连贯 Agora (2021-09-15) https://www.rtcdeveloper.cn/cn/community/blog/22929● 应用 Swift 部署声网 Token 服务器 (2022-10-27): https://www.rtcdeveloper.cn/cn/community/blog/24981●在NET Core 上建设 Agora AccessToken 服务 (2020-11-14):https://www.rtcdeveloper.cn/cn/community/blog/19790● 如何用 GoLang 为声网 Agora 利用构建 Token 服务器 (2020-12-09):https://www.rtcdeveloper.cn/cn/community/blog/20102● 如何应用 NodeJS 为声网 Agora 利用构建 Token 服务器 (2020-12-03): https://www.rtcdeveloper.cn/cn/community/blog/20024● 应用 Java 构建 Agora 令牌服务器 (2021-02-07):https://www.rtcdeveloper.cn/cn/community/blog/20709● 用 Java 构建声网令牌服务器 (2023-01-10): https://www.rtcdeveloper.cn/cn/community/blog/25430 ...

May 3, 2023 · 2 min · jiezi

关于token:JWT-Token在线编码生成

JWT Token在线编码生成JWT Token在线编码生成 JSON Web Token(缩写 JWT)是目前最风行的跨域认证解决方案。本工具提供在线编码的性能 JSON Web Token(缩写 JWT)是目前最风行的跨域认证解决方案。本工具提供在线编码的性能 https://tooltt.com/jwt-encode/

February 23, 2022 · 1 min · jiezi

关于token:用户登录设计之双token设计

背景笔者在做的一个我的项目之前的登录接口是实习生写的,登录设计就是简略的提交用户名明码获取token,而后token的过期工夫巨长是30天,于是乎另一位工作年限长一点的共事批改了代码,变成了登录获取两个token: 1.accessToken: 真正用来获取数据的权限2.refreshToken: 用来获取accessToken为什么须要双token?总所周知,token是为了避免用户信息传来传去导致被劫持,然而如果token没有过期工夫或者过期很长,那么显然token被劫持还是不平安的,token就失去了意义。 所以这时候大家必定都想:那么把token过期工夫设置的短一点就行啦? 是的,一般来讲accessToken的过期工夫应该要短一点,然而这时候对于用户来讲就麻烦了。 因为token过期就意味着要从新登录,设想下你正浏览的好好的,忽然让你掉线了并且要求你从新登录,心里必定是想骂人的。 什么时候须要用户从新登录? 次要有三种状况: 1.用户长时间无操作,也能够定义未不沉闷用户,就会被主动踢下,主动重定向到登录页面,超时工夫能够自定义设置;2.token生效,通常是双token都生效后,会要求从新登录获取新的双token;3.当检测到有危险的时候,能够要求从新登录,获取token;因而这时候就能够应用双token的设计,当两个token都过期了再要求用户从新登录,对于refreshToken,它只用来获取accessToken,不会频繁被用于申请,对于accessToken,它过期工夫十分短,即便被拦挡了解密也须要工夫,而token自身也很快过期,因而这样的设计更加平安。 那么就这样就大快人心了吗?显然不是作为前端,咱们还须要实现让用户对于应用refreshToken获取accessToken的操作是无感的,这样能力既保证更加平安正当,也不影响用户体验。 如何实现refreshToken获取token无感刷新?总的来说个别有三种办法: 1.通过后端返回过期工夫,前端依据以后工夫与这个过期工夫做判断,去调用刷新token接口毛病:须要后端额定提供一个Token过期工夫的字段;应用了本地工夫判断,若本地工夫被篡改,特地是本地工夫比服务器工夫慢时,拦挡会失败。 2.定时工作,定时应用refreshToken获取accessToken浪费资源,耗费性能,不倡议采纳。 3.做响应拦截器中拦挡,后端判断token 返回过期后,调用刷新token接口比拟好的计划,也是我在我的项目中应用的计划,并且axios有做响应拦挡的api 这里贴一个简略的实现demo: import axios from 'axios'; axios.interceptors.response.use(res => { // token异样 if (res.data.code === 409) { deleteToken(); router.push('/login') return Promise.reject(); // 更新Token } else if (res.data.code === 410) { const {token} = res.data setToken(token);// 重置token } return res && res.data})复制代码总结为了用户平安因而要应用token设计,为了解决用户频繁登录,采纳双token设计,同时前端也须要做肯定解决。 最初如果你感觉此文对你有一丁点帮忙,点个赞。或者能够退出我的开发交换群:1025263163互相学习,咱们会有业余的技术答疑解惑 如果你感觉这篇文章对你有点用的话,麻烦请给咱们的开源我的项目点点star: https://gitee.com/ZhongBangKe...不胜感激 !

December 1, 2021 · 1 min · jiezi

关于token:实现无感刷新token我是这样做的

前言 最近在做需要的时候,波及到登录token,产品提出一个问题:能不能让token过期工夫长一点,我频繁的要去登录。 前端:后端,你能不能把token 过期工夫设置的长一点。 后端:能够,然而那样做不平安,你能够用更好的办法。 前端:什么办法? 后端:给你刷新token的接口,定时去刷新token 前端:好,让我思考一下 需要 当token过期的时候,刷新token,前端须要做到无感刷新token,即刷token时要做到用户无感知,防止频繁登录。实现思路 办法一后端返回过期工夫,前端判断token过期工夫,去调用刷新token接口 毛病:须要后端额定提供一个token过期工夫的字段;应用了本地工夫判断,若本地工夫被篡改,特地是本地工夫比服务器工夫慢时,拦挡会失败。 办法二写个定时器,定时刷新token接口 毛病:浪费资源,耗费性能,不倡议采纳。 办法三在响应拦截器中拦挡,判断token 返回过期后,调用刷新token接口 实现 axios的根本骨架,利用service.interceptors.response进行拦挡 import axios from 'axios'service.interceptors.response.use( response => { if (response.data.code === 409) { return refreshToken({ refreshToken: localStorage.getItem('refreshToken'), token: getToken() }).then(res => { const { token } = res.data setToken(token) response.headers.Authorization = `${token}` }).catch(err => { removeToken() router.push('/login') return Promise.reject(err) }) } return response && response.data }, (error) => { Message.error(error.response.data.msg) return Promise.reject(error) })复制代码问题解决 ...

October 14, 2021 · 2 min · jiezi

关于token:基于-token-的多平台身份认证架构设计

我的公众号:MarkerHub,Java网站:https://markerhub.com更多精选文章请点击:Java笔记大全.md 小Hub领读:很多人都晓得token作为用户会话凭证,其实利用场景还有很多,分类也很多,文中论述了token的分类问题、隐衷性参数设置问题、应用场景问题、不同生命周期的 token 分层转化关系等;以及介绍了不同应用场景。 没想到,小小token竟然也有什么多知识点,涨见识了~ 作者:哈莫cnblogs.com/beer/p/6029861.html1、概述在存在账号体系的信息系统中,对身份的鉴定是十分重要的事件。 随着挪动互联网时代到来,客户端的类型越来越多, 逐步呈现了 一个服务器,N 个客户端的格局 。 不同的客户端产生了不同的用户应用场景,这些场景: 有不同的环境平安威逼不同的会话生存周期不同的用户权限管制体系不同级别的接口调用形式综上所述,它们的身份认证形式也存在肯定的区别。 本文将应用肯定的篇幅对这些场景进行一些剖析和梳理工作。 2、应用场景上面是一些在 IT 服务常见的一些应用场景: 用户在 web 浏览器端登录零碎, 应用零碎服务用户在手机端(Android/iOS)登录零碎, 应用零碎服务用户应用凋谢接口登录零碎, 调用零碎服务用户在 PC 解决登录状态时通过手机扫码受权手机登录(应用得比拟少)用户在手机解决登录状态进通过手机扫码受权 PC 进行登录(比拟常见)通过对场景的细分, 失去如下不同的认证 token 类别: 1、原始账号密码类别 用户名和明码API 利用 ID/KEY2、会话 ID 类别 浏览器端 token挪动端 tokenAPI 利用 token3、接口调用类别 接口拜访 token身份受权类别PC 和挪动端互相受权的 token3、token 的类别不同场景的 token 进行如下几个维度的比照: 人造属性比照:1、应用老本 本认证形式在应用的时候, 造成的不便性。比方: 账号密码须要用户关上页面而后一一键入二维码须要用户掏出手机进行扫码操作2、变动老本 本认证形式, token 发生变化时, 用户须要做出的相应更改的老本: 用户名和明码发生变化时, 用户须要额定记忆和从新键入新密码API 利用 ID/KEY 发生变化时, 第三方利用须要从新在代码中批改并部署受权二维码发生变化时, 须要用户从新关上手机利用进行扫码环境危险 被偷窥的危险被抓包的危险被伪造的危险可调控属性比照:1、应用频率 在网路中传送的频率 2、无效工夫 此 token 从创立到终结的生存工夫 ...

March 23, 2021 · 2 min · jiezi

关于token:axios封装结合token

1.开发环境 vue+axios+typescript2.电脑系统 windows10专业版3.在开发的过程中,咱们在做登录的时候会被要求应用token进行登录,上面我来分享一下应用办法(只是简略的封装),心愿对你有所帮忙。4.在src目录下新建4-1.chenhttp.js代码如下: import axios from 'axios'import qs from "qs"// 环境的切换if (process.env.NODE_ENV === 'development') { // axios.defaults.baseURL = '/api'; axios.defaults.baseURL = '/api';} else if (process.env.NODE_ENV === 'debug') { axios.defaults.baseURL = ''} else if (process.env.NODE_ENV === 'production') { axios.defaults.baseURL = ''}axios.defaults.timeout = 10000;axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8;multipart/form-data';// 增加申请拦截器,在申请头中加tokenaxios.interceptors.request.use( config => { if (localStorage.getItem('Cusertoken')) { config.headers.Ctoken = localStorage.getItem('Cusertoken'); } return config; }, error => { return Promise.reject(error); });// 封装axios的post申请const post = (url, params) => { return new Promise((resolve, reject) => { axios .post(url, qs.stringify(params)) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }); });};// 封装axios的put申请const put = (url, params) => { return new Promise((resolve, reject) => { axios .put(url, params) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }); });};// 封装axios的delete申请const del = (url, params) => { return new Promise((resolve, reject) => { axios .delete(url, params) .then(response => { resolve(response.data); }) .catch(error => { reject(error); }); });};const get = (url, query) => { return axios.get(url, query);};const $axios = { post: post, get: get, put: put, delete: del};export default $axios;4-2.chenapi.js对立接口治理,小伙伴们依据本人的需要进行批改,代码如下: ...

January 25, 2021 · 2 min · jiezi

关于token:JWT工具类

工具开源地址 欢送大家搜寻“小猴子的技术笔记”关注我的公众号,有问题能够及时和我交换。 之前咱们曾经理解到了什么是JWT以及JWT的长处,那么怎么在我的项目中应用到JWT呢?首先咱们须要在maven的我的项目中引入JWT的依赖: <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.12.0</version></dependency> 胜利引入jar包之后就能够进行token的生成了。之后须要指定一个加密的算法,也就是须要你本人提供一个秘钥串来进行加密。你能够把它了解为之前做MD5加密的时候加上的盐值。 Algorithm algorithm = Algorithm.HMAC256("this is your secret") 咱们有十种算法能够抉择: 而后咱们就能够利用jar包中的办法,创立一个token并且附带上签名,之后就可能失去一个残缺的token令牌。 public static void main(String[] args) { Algorithm algorithm = Algorithm.HMAC256("this is your secret"); String token = JWT.create().sign(algorithm); System.out.println(token);}eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.e30.svmNHFYzrAj6USTjLekz3CTFyEdmpRkE8A8x3CbPe1Q 这仅仅是一个简略的token的生成,有的时候咱们还想在token中传递咱们的信息,就能够应用上面这个办法: public static void main(String[] args) { Algorithm algorithm = Algorithm.HMAC256("this is your secret"); String token = JWT.create().withClaim("name", "小猴子").sign(algorithm); System.out.println(token);} 如果你有很多条件须要传递就能够“withClaim()”多个值。须要留神的是:这里请不要传递敏感的信息免得token被破解,信息泄露。 咱们在开发中一个token必定不可能始终应用,肯定有个过期工夫。那么在JWT中怎么定义token的过期工夫呢?JWT内置了为咱们设置token的过期工夫策略,官网给提供了一个“withExpireAt()”的办法。须要传递一个日期参数来指定过期工夫。 public static void main(String[] args) { Algorithm algorithm = Algorithm.HMAC256("this is your secret"); JWTCreator.Builder builder = JWT.create().withClaim("name", "小猴子"); String token = builder.withExpiresAt(new Date(System.currentTimeMillis() + 2000)).sign(algorithm); System.out.println(token);} 生成token: ...

January 18, 2021 · 2 min · jiezi

关于token:ECDSA密钥对生成以及在Token中的应用

1 概述本文次要讲述了如何利用Openssl生成ECDSA密钥对,并利用Auth0库进行Token生成及验证的过程。 2 ECDSA2.1 简介ECC(Elliptic Curve Cryptography,椭圆曲线加密)是一种基于椭圆曲线数学的公钥加密算法,而ECDSA是应用ECC对数字签名算法(DSA)的模仿,总的来说ECC相比起常见的RSA更加平安并且生成密钥对的过程会更快。本文不会波及过多原理性的货色,只是作简略的介绍,想要详情理解这些算法的能够戳这里。 2.2 密钥对生成在Openssl中生成ECDSA密钥对的流程如下: openssl ecparam -genkey -name secp521r1 -out private.pem #生成私钥openssl ec -in private.pem -pubout -out public.pem #生成公钥参数阐明如下: ecparam:EC参数设置以及生成命令-genkey:应用特定参数生成EC私钥-name:ec参数,能够应用openssl ecparam -list_curves 查看,这里用的是secp521r1-out:输入文件名ec:EC密钥解决命令-in:输出文件-pubout:默认状况下会输入私钥,加上该选项会变成输入公钥(如果输出是公钥的状况下该参数会主动设置)执行完命令后就胜利生成密钥对了,能够查看一下: 密钥对生成之后就能够筹备一下生成Token了。 3 Auth0中的Token利用3.1 Auth0Auth0提供了验证以及受权服务,这里利用官网提供的Java实现去生成Token(这里插一句题外话,Java罕用的Token实现还有一个叫JJWT的库),首先引入包: <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.12.0</version></dependency>Gradle: compile group: 'com.auth0', name: 'java-jwt', version: '3.12.0'引入起初看一下反对的加密算法,如下图: 最简略的应用HMAC算法生成的Token如下: System.out.println(JWT.create().withIssuer("issuer").withAudience("content").sign(Algorithm.HMAC512("password")));当然这不是本文的重点,本文的重点是介绍如何利用ECDSA去生成Token。 首先Auth0提供的签名api如下: JWT.create().sign(Algorithm)其中Algorithm能够取值如下: 想要应用ECDSA算法须要提供一个ECDSAKeyProvider或一个ECPublicKey和一个ECPrivateKey,这里抉择后一种形式实现。 3.2 密钥对解决官网并没有提供如何生成ECPublicKey/ECPrivateKey的办法,甚至连从文件读取密钥对的办法都没有提供,笔者从官网提供的测试代码中发现了如下办法: 其中外围就是读取密钥对的两个办法: readPublicKeyFromFilereadPrivateKeyFromFile从import后果能够看到这是一个工具类: 但问题是官网该工具类是测试应用的,换句话说不对外裸露的,在IDEA中间接引入会报错: 因而间接找到该工具类的源码(链接能够戳这里,须要引入bouncycastle包,Maven仓库链接能够戳这里) package com.auth0.jwt;import org.bouncycastle.util.io.pem.PemObject;import org.bouncycastle.util.io.pem.PemReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.security.KeyFactory;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.PublicKey;import java.security.spec.EncodedKeySpec;import java.security.spec.InvalidKeySpecException;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;public class PemUtils { private static byte[] parsePEMFile(File pemFile) throws IOException { if (!pemFile.isFile() || !pemFile.exists()) { throw new FileNotFoundException(String.format("The file '%s' doesn't exist.", pemFile.getAbsolutePath())); } PemReader reader = new PemReader(new FileReader(pemFile)); PemObject pemObject = reader.readPemObject(); byte[] content = pemObject.getContent(); reader.close(); return content; } private static PublicKey getPublicKey(byte[] keyBytes, String algorithm) { PublicKey publicKey = null; try { KeyFactory kf = KeyFactory.getInstance(algorithm); EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); publicKey = kf.generatePublic(keySpec); } catch (NoSuchAlgorithmException e) { System.out.println("Could not reconstruct the public key, the given algorithm could not be found."); } catch (InvalidKeySpecException e) { System.out.println("Could not reconstruct the public key"); } return publicKey; } private static PrivateKey getPrivateKey(byte[] keyBytes, String algorithm) { PrivateKey privateKey = null; try { KeyFactory kf = KeyFactory.getInstance(algorithm); EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); privateKey = kf.generatePrivate(keySpec); } catch (NoSuchAlgorithmException e) { System.out.println("Could not reconstruct the private key, the given algorithm could not be found."); } catch (InvalidKeySpecException e) { System.out.println("Could not reconstruct the private key"); } return privateKey; } public static PublicKey readPublicKeyFromFile(String filepath, String algorithm) throws IOException { byte[] bytes = PemUtils.parsePEMFile(new File(filepath)); return PemUtils.getPublicKey(bytes, algorithm); } public static PrivateKey readPrivateKeyFromFile(String filepath, String algorithm) throws IOException { byte[] bytes = PemUtils.parsePEMFile(new File(filepath)); return PemUtils.getPrivateKey(bytes, algorithm); }}间接复制该工具类后,将前一步生成的private.pem以及public.pem搁置适合地位,通过工具类读取并生成Token: ...

December 31, 2020 · 2 min · jiezi

关于token:什么是token

对于初学者来说,对Token和Session的应用难免会限于窘境,开发过程中晓得有这个货色,但却不晓得为什么要用他?更不晓得其原理,明天我就带大家一起剖析剖析这货色。     一、咱们先解释一下他的含意: 1、Token的引入:Token是在客户端频繁向服务端申请数据,服务端频繁的去数据库查问用户名和明码并进行比照,判断用户名和明码正确与否,并作出相应提醒,在这样的背景下,Token便应运而生。 2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行申请的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,当前客户端只需带上这个Token前来申请数据即可,无需再次带上用户名和明码。 3、应用Token的目标:Token的目标是为了加重服务器的压力,缩小频繁的查询数据库,使服务器更加强壮。     理解了Token的意义后,咱们就更明确的晓得为什么要用他了。     二、如何应用Token?     这是本文的重点,在这里我就介绍罕用的两种形式。 1、用设施号/设施mac地址作为Token(举荐)     客户端:客户端在登录的时候获取设施的设施号/mac地址,并将其作为参数传递到服务端。     服务端:服务端接管到该参数后,便用一个变量来接管同时将其作为Token保留在数据库,并将该Token设置到session中,客户端每次申请的时候都要对立拦挡,并将客户端传递的token和服务器端session中的token进行比照,如果雷同则放行,不同则回绝。 剖析:此刻客户端和服务器端就对立了一个惟一的标识Token,而且保障了每一个设施领有了一个惟一的会话。该办法的毛病是客户端须要带设施号/mac地址作为参数传递,而且服务器端还须要保留;长处是客户端不需从新登录,只有登录一次当前始终能够应用,至于超时的问题是有服务器这边来解决,如何解决?若服务器的Token超时后,服务器只需将客户端传递的Token向数据库中查问,同时并赋值给变量Token,如此,Token的超时又从新计时。 2、用session值作为Token     客户端:客户端只需携带用户名和明码登陆即可。     客户端:客户端接管到用户名和明码后并判断,如果正确了就将本地获取sessionID作为Token返回给客户端,客户端当前只需带上申请数据即可。 剖析:这种形式应用的益处是不便,不必存储数据,然而毛病就是当session过期后,客户端必须从新登录能力进行拜访数据。     三、应用过程中呈现的问题以及解决方案? 方才咱们轻松介绍了Token的两种应用形式,然而在应用过程中咱们还呈现各种问题,Token第一种办法中咱们暗藏了一个在网络不好或者并发申请时会导致多次重复提交数据的问题。     该问题的解决方案:将session和Token套用,如此便可解决,如何套用呢?请看这段解释:      这就是解决反复提交的计划。      总结:以上是集体对开发中应用Token和session的一点总结,如有叙述不当之处请斧正,我将及时改过并感激,我晓得还有更多更好的应用形式,我在这里只是抛砖引玉,心愿大家将您的应用形式提出来,咱们一起探讨,学习,一起提高,同时也为像我一样对这方面了解单薄的敌人提供点帮忙,谢谢 作者:9264oo链接:https://www.jianshu.com/p/248...起源:简书著作权归作者所有。商业转载请分割作者取得受权,非商业转载请注明出处。

November 17, 2020 · 1 min · jiezi

关于token:如何获取变量token的值

一.什么是token 客户端应用用户名跟明码申请登录服务端收到申请,去验证用户名与明码验证胜利后,服务端会签发一个 Token,再把这个 Token 发送给客户端客户端收到 Token 当前能够把它存储起来,比方放在 Cookie 里或者 LocalStorage 里,客户端每次向服务端申请资源的时候须要带着服务端签发的 Token服务端收到申请,而后去验证客户端申请外面带着的 Token,如果验证胜利,就向客户端返回申请的数据web/APP登录的时候发送加密的用户名和明码到服务器,服务器验证用户名和明码,如果胜利,以某种形式比方随机生成32位的字符串作为token,存储到服务器中,并返回 token 到web/APP,当前web/APP申请时但凡须要验证的中央都要带上该 token,而后服务器端验证 token,胜利返回所须要的后果,失败返回错误信息,让他从新登录。其中服务器上 token 设置一个有效期,每次web/APP申请的时候都验证token 和有效期。二、如何获取token的值,进行接口测试。 接口测试的工具大部分都能够获取登录之后返回的token值,这里给大家解说如何用apipost获取token值的办法。 先关上apipost,进行登录接口的编写,而后获取token的值。 接着咱们来援用这个token的值,援用token的值须要咱们先设置环境变量 环境抉择为新建好的环境,在援用url地址。援用格局为{{变量名}} 在去设置后执行脚本获取token值,“token”是参数名称,response.json.token的意思是返回的json数据中的token值。 这些都设置好之后,就能够援用token了,token援用的办法和环境变量设置的url援用办法一样也是{{token}} 三、接口流程测试。 token值援用好之后,就能够进行接口流程化测试了。 抉择接口点击增加到流程测试中 进行流程测试 这就是如何获取token值进行接口流程测试的步骤了。 apipost工具下载地址: ApiPost - 可间接生成文档的API调试、管理工具www.apipost.cn

October 29, 2020 · 1 min · jiezi