问题标签 [django-webtest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
15 浏览

django - Django-Webtest 中的用户权限缓存

我的项目使用自定义身份验证后端来管理用户权限,使身份验证本身保持不变(由 Django 处理)。后端本身工作正常,但在使用 Django WebTest 构建的测试中开始失败。经过一番挑选,我发现罪魁祸首是 DWT 将另一个身份验证后端注入settings.AUTHENTICATION_BACKENDS.

我的后端直接扩展了 Django 的ModelBackend,而 DWT 自己的后端是基于 offRemoteUserBackend的,最终也是ModelBackend. 这一点很重要,因为虽然 DWT 没有定义has_perm方法,但它仍然存在于其后端。

执行测试时,缓存有问题的用户对象的权限django.contrib.auth.backends.ModelBackendget_all_permissions()has_perm

由于 DWT 的后端首先出现在测试中,缓存被填充并且不会包含我的后端设置的权限,最终导致has_perm测试失败。参考 Django 中的代码片段:

我在后端做错了什么还是 DWT 作者的疏忽?在测试中如何继续使用我的自定义权限逻辑?