django——postman自动设置token

本文介绍如何在Postman中自动获取并设置Django项目的CSRF Token,实现API自动化测试。通过Postman的Tests功能,利用JS脚本获取登录后设置在cookie中的csrftoken,将其设置为全局变量,用于后续请求头的X-CSRFToken字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在django项目中,由于csrf的保护,我们不得不在请求头添加"X-CSRFToken",如果不加的话,项目会返回403.

Django项目的csrftoken一般在登录的时候会设置到cookie中,本文描述了如何使用postman自动获取cookie中的csrftoken,并将该值自动设置到后续请求的header中。

为了自动化地设置这个token,我们需要使用postman的“Tests”功能。Postman的“Tests”功能支持使用JS进行一些变量操作。我们可以在登录接口的请求中填入如下的Tests脚本:

var csrf_token = postman.getResponseCookie("csrftoken").value
postman.clearGlobalVariable("csrftoken");
postman.setGlobalVariable("csrftoken", csrf_token);

脚本编写后内容入下图所示:

设置Testsèæ¬

该脚本将登录后设置的csrftoken这个cookie的值获取到,并设置为一个postman的全局环境变量(csrftoken),此时点击postman界面右上角眼睛一样的图标可以直接查看到这个全局的变量:

查看全局变量

此时可以在后续的请求中设置“X-CSRFToken”这个header,值就是刚才设置好的全局变量,使用“”即可完成引用:

设置header

此后每次重新登录,该变量值就会重新进行设置,使得系统API的自动化测试可以顺利进行。

在实际开发中,我们有时候还会使用token进行认证,认证用的token也可以通过类似的方式来进行设置,只是获取token的方式是从返回的json中来获取,下图是一个设置认证头的示例,:

var token = JSON.parse(responseBody).token;
postman.clearGlobalVariable("token");
postman.setGlobalVariable("token", token);

界面设置效果如下:

设置认证header

 

参考资料:https://knktc.com/2018/06/03/postman-set-token/

 

Django和Vue中使用token进行身份验证的过程如下所示。首先,在Django的根目录的urls.py文件中,我们可以定义获取token和刷新token的路由,这需要引入TokenObtainPairView和TokenRefreshView视图。 其中,TokenObtainPairView用于验证用户并生成tokenTokenRefreshView用于刷新token。 其次,在Django的userAuth模块下新建一个auth.py文件,我们可以自定义一个用户认证类,该类继承TokenAuthentication,并实现处理token过期的逻辑。 这个自定义的认证类可以用于验证请求中的token是否有效,如果过期则返回401错误。 然后,我们可以使用Postman进行测试,确保能够成功获取token和刷新token。在测试之前,请确保已经创建了用户,在Django中使用自带的用户体系进行用户创建。创建超级用户可以使用命令行输入"python3 manage.py createsuperuser"来创建。创建完毕后,用户数据信息会生成在用户数据表中。在settings.py文件中配置的AUTH_USER_MODEL = 'login.UserInfo'将会被用于用户信息的认证。在Postman中,我们可以发送一个POST请求,设置headers为"Content-Type: application/json",同时在request body中传递用户名和密码参数,参数名分别为"username"和"password"。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Django+Vue,前后端分离,实现用户权限认证](https://blog.youkuaiyun.com/qq_33398946/article/details/109974998)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue token过期 当前页数据丢失_Vue结合DjangoRestFramework实现登录认证(下)](https://blog.youkuaiyun.com/weixin_39633113/article/details/110259044)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值