token原理和验证方法、场景

背景:

        因为一个生产问题引发我整理了这篇文章,目的是以一种简单的方式让所有的测试从根本上认识token,在以后对token相关的测试场景有一定的敏感度和标准动作指导,规避再犯这类生产问题。

BadCase:

【问题描述】:用户小程序私域方案页太阳码,登录页循环跳转,导致不能正常登录进入方案页

【影响范围】:token失效的小程序用户扫码进入私域方案,不能正常登录进入方案页

【原因分析】:登录态失效,在访问私域方案时候,webview页校验到token失效,跳转登录页的时候未验证token失效。两个页面的校验逻辑不一致导致出现该问题。

【事件过程】:这里不逃避,直视面对问题,分析过程找根因。

第一个why,为什么4.8号测试发现了这个问题,就把问题放过去了?

  • 最开始发现这个问题的不是专门测试这个需求的测试,是测试其他需求的过程中测试发现了这个问题找到开发反馈,开发给的结论是测试使用小程序版本冲突,因为当时小程序生产版本和体验版本都有过使用记录,没有杀死进程,测试按照开发给的方式杀死小程序重新进入,试过后问题现象消失,能正常就认为开发解释的对,问题就放过去了

第二个why,为什么测试认为杀死进程再进就是能验证开发说的是对的?

  • 因为没有深究和反向再次验证这个问题,操作了一次就认为这个这个验证方式是对的,也就想当然的认为开发说的是有道理的,再转念一想生产上用户也只能用到生产版本,并不能同时使用体验版和生产版,所以就说服了自己

第三个why,为什么执行用例的时候没有发现这个问题?

  • 回顾翻看了用例,用例里也确实写了,这里的token需要存在且有效,但是执行的时候这个只重点关注了这次改造的公域免登涉及到的opentoken有效无效,没有重点关注到accesstoken无效的场景,只是按照私域用例走了主流程场景,没有考虑到私域验证登录这里也被改动了,且影响到了登录校验跳转

PS:当然这个BadCase里也反应出了一些别的问题,我们在这里不做分析,我们这篇文章就解决验证token的问题

一、token的工作原理

        Token是一种在网络通信中用于身份验证和信息传递的机制。它通常是一个由服务器生成的字符串,包含了用户的身份信息、权限以及其他可能的数据。以下是Token的原理、验证方法和应用场景的介绍:

        这里为了更好明白,更直观,直接用图画的形式解释:

1.token是前端存在缓存里一份,后端存在数据库里一份

2.验证token是否有效是拿前端从缓存里拿的token和后端存的token做对比,一致就算有效,不一致就算无效

3.token有效的时候不需要重新登录,token无效是需要重新登录重新获取新token

Token存放位置

        Token 其实就是访问资源对凭证。一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token。

它在用户登录成功之后会返回给客户端,客户端主要以下几种存储方式:

1、存储在localStorage中,每次调用接口的时候都把它当成一个字段传给后台

2、存储在cookie中,让它自动发送,不过缺点就是不能跨域

3、拿到之后存储在localStorage中,每次调用接口的时候放在HTTP请求头的Authorization字段里面。token 在客户端一般存放于localStorage、cookie、或sessionStorage中。

二、验证方法

1.无token,获取新token(比如第一次登录小程序、app、网站等)

2.有token,且有效(之前登录过小程序、app、网站,这个token在前端缓存里能取到,且没有过期)

3.有token,且无效(之前登录过小程序、app、网站,这个token在前端缓存里能取到,且已经过期)

如何模拟token过期的数据

1.从后端入手

  • 改数据库里的token,可以把它改成一个和前端不一致的

  • 也可以手动置无效(注销登录的方式)设置Token失效方法 -- 推荐

PS:对我们的现状来说,因为所有的用户信息都在用户中心,所以咱们没有用户中心的权限,自然改不成数据库,那就用手动置无效的方式

2.从前端入手

  • 找到token存储的位置,localStorage、cookie、或sessionStorage中,修改token,改成和后端不一致的

  • 同一个app、小程序换手机登录,让token过期后再,换回第一个设备,模拟token过期 -- 推荐

  • 抓包,打断点拦截验证接口请求,然后再修改请求里的token信息,同理改成不一样的即可 如何用Charles打断点修改入参和返回结果

PS:因为前端存储的token有时候是加密的所以不好修改,也可能找不到是哪个字段,所以修改token来说可行性不高,推荐使用切换手机来模拟token失效

三、验证场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值