在测试后端接口时,我们经常会遇到某个接口是需要权限才能访问,如登录后才能访问,那postman如何模拟已登录的状态呢?再者,如果我们在做注册模块时,后端验证码生成并通过邮箱或短信发送给用户后,必然会将验证码存入session,这是一个接口;当用户点击注册时,我们需要验证用户输入的验证码是否正确,这是另一个接口。那如何通过postman时在测试两个接口时用的是同一个验证码?以上都是session共享问题。
我们知道,在浏览器第一次访问服务器时,服务器会创建一个新的sesion,并且把session的Id以cookie的形式发送给客户端浏览器,称为jsessionid。如图
方法一:
如果我们将jsessionid做为header的一部分,请求另一个接口时带上,那么就能使两次请求视为是同一个客户操作。在解决登陆问题时,我们可以先用postman进行登录接口的请求(或者通过浏览器请求获取),将得到的就jsessionid作为头部,就能进行其他带用户权限的接口访问了。验证码操作也是如此,本文的重点不在此,详细步骤可参见https://blog.csdn.net/zdj18166896501/article/details/85121211。
方法二:
我在运用方法一时,postman一直获取不到jsessionid,如图:
经过上网查找发现很有可能是cookie被禁用了。但我在返回的Headers中发现了Token参数,
一想到Token也能作为身份校验手段,(session与token区别https://blog.csdn.net/qq_1290259791/article/details/81193914),就抱着试试看的心态把Token放入headers中
果然,后端将两次访问识别为同一用户,成功从session中取出验证码,比对成功,
,
仔细看会发现,上图中的Headers不再是4个参数,而是只有3个参数,点开发现这次后端就没有再返回token了。
此时,我们可以用之前获取到的token进行多个接口的访问,均会被视为是同一用户。