Как я могу запросить уже вошедшего пользователя подтвердить пароль для входа на определенную страницу в django?

Я работаю над приложением на django. В приложении есть приборная панель. Как я могу сделать так, чтобы каждый раз, когда пользователь хочет получить доступ к приборной панели, он должен подтвердить свою личность, используя тот же пароль, который он использует для входа в это приложение?

Спасибо

# Убедитесь, что комбинация USERNAME и PASSWORD существует, используя метод AUTHENTICATE,

Views.py:

from django.contrib.auth.models import User
from django.contrib.auth import authenticate

#IN YOUR CASE get the pwd using forms or something,

instance_password = request.post.get('the_pwd_field')

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

if user is not None:
    # REDIRECT TO THE DASHBOARD
else:
    # FAIL CASE SCENARIO

В views.py

from django.contrib.auth.hashers import check_password

form = YourFormForPassword(request.POST or None)
if form.is_valid():
    currentpasswordentered = form.cleaned_data.get("try_password")
    currentpassword = request.user.password

    authenticate_user = check_password(currentpasswordentered, currentpassword)

if authenticate_user:
    # REDIRECT TO THE DASHBOARD
else:
   #Redirect to other page or keep same login page

Если вы хотите, чтобы пользователь явно вводил учетные данные перед доступом к приборной панели, то вы должны вернуть "форму", которая принимает учетные данные от пользователя, когда он пытается получить доступ к приборной панели.

def dashboard_login_view(request):
    context = {}
    if request.method == 'POST':
        form = DashboardLoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('dashboard_login_username').lower()
            password = form.cleaned_data.get('dashboard_login_password')
            authenticated = check_password(password)
            if authenticated:
                return HttpResponseRedirect(reverse('dashboard_view'))
            else:
                messages.error('User is not authenticated.')
                return HttpResponseRedirect(reverse('login'))
    else:
        context['form_one'] = DashboardLoginForm()
 
    return render(request, 'dashboardlogin.html', context)
Вернуться на верх