在需要双因素身份验证以及登录和权限的 Django 视图中,mixin 类 的相对顺序应该是什么?

In a Django view requiring two-factor authentication as well as login and permission, what should be the relative order of the mixin classes?

我正在查看使用 OTPRequiredMixin as well as the LoginRequiredMixin and the PermissionRequiredMixin 的基于 class 的视图。我知道继承链中 mixins 的顺序很重要;例如,文档指出 LoginRequiredMixin 应该在最左边的位置。

我的猜测是 mixin 应该按如下顺序排列:

from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from two_factor.views.mixins import OTPRequiredMixin


class AccessMixin(LoginRequiredMixin, PermissionRequiredMixin, OTPRequiredMixin):
    pass

但是,我无法从 Django 双因素身份验证文档中找到对此的任何确认。这是订购 mixins 的正确方法吗?

当您使用 PermissionRequiredMixin 时,您可能不需要 LoginRequiredMixin - 匿名用户将无法通过权限检查并被重定向。

其他两个 mixin 的顺序可能无关紧要。您当前的顺序(PermissionRequiredMixinOTPRequiredMixin 之前)意味着将首先检查权限。如果您希望 OTPRequiredMixin 先检查到 运行,您可以切换顺序。