-1

我正在使用 Django双重身份验证来保护我的管理员登录。我为我的每个管理员强制执行 OTP 要求登录。现在我想为我的普通用户实现这个。如果任何用户在他的帐户上激活了两个因素,那么每次他都会像管理员用户一样被重定向到 otp 页面,如果没有启用两个因素,那么他将重定向到我的帐户页面。这是我的登录视图:

def login_view(request):
     username = None
     password = None
     if request.user.is_authenticated:
         return redirect('blog:my-account')
     else:
         if request.method == 'POST':
            username = request.POST.get('username')
            password =request.POST.get('password')

            user = authenticate(request, username=username, password=password)

            if user is not None:
                login(request, user)
                messages.add_message(request, messages.INFO,'Login Sucessfull')
                return redirect('members:user-profile-private')


**urls.py**

 path('login/',views.login_view, name='login'),

我还想知道如何取回 Django 默认管理员登录页面。实施 django-two-factor-auth 后,我的管理员登录页面如下所示

在此处输入图像描述

有没有办法重新设计自定义的两因素身份验证登录 html 页面???

4

1 回答 1

1

只是为了展示我最终是如何修复它的。

我想尽可能地使用默认的 django 样式,以使用户(在我的情况下仅限管理员)的外观和感觉一致。

因此,在我的主模板文件夹中(参见:https ://docs.djangoproject.com/en/3.2/topics/templates/ )我添加了以下文件夹/文件:[templates]/two_factor/_base.html

该文件具有以下内容:

{% extends "admin/base_site.html" %}

{% block extrahead %}
  <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet" media="screen">
  <script defer src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script defer src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js"></script>
{% endblock %}

{% block content %}{% endblock %}

这基本上只是引用模板以使用默认的 Django Admin 模板。然而,由于 2FA 模板依赖于 Bootstrap 4(如果你问我,这是一个非常愚蠢的设计决定),我必须包含相关的标题。

于 2021-09-17T12:22:32.593 回答