Как сделать аутентификацию пароля с помощью QR для html-формы django
Я сделал защищенную паролем страницу с помощью django и cms wagtail, мне нужно, чтобы произошли следующие случаи:
Если пользователь вводит url нормально: страница требует от него пароль через HTML-форму и не дает ему доступ к ней, пока он не введет правильный пароль (Done).
Если пользователь входит с помощью QR-кода: страница не требует от него пароля, и он сразу получает доступ к содержимому страницы.
Models.py:
from wagtail.core.models import Page, PageViewRestriction
from wagtail.images.edit_handlers import ImageChooserPanel
from django.utils.translation import gettext_lazy as _
class ProfilePage(Page):
template = 'profile/profile_page.html'
def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)
return context
def save(self, *args, **kwargs):
your_page = ProfilePage.objects.all().first()
PageViewRestriction.objects.create(page=your_page, restriction_type='password')
return super().save(*args, **kwargs)
шаблон пароля (шаблон по умолчанию):
<!DOCTYPE HTML>
<html>
<head>
<title>Password required</title>
</head>
<body>
<h1>Password required</h1>
<p>You need a password to access this page.</p>
<form action="{{ action_url }}" method="POST">
{% csrf_token %}
{{ form.non_field_errors }}
<div>
{{ form.password.errors }}
{{ form.password.label_tag }}
{{ form.password }}
</div>
{% for field in form.hidden_fields %}
{{ field }}
{% endfor %}
<input type="submit" value="Continue" />
</form>
</body>
</html>
Я думаю, вам нужно, чтобы url вашего QR-кода переходил к представлению, которое автоматически регистрирует человека на публичной стороне вашего сайта, а затем перенаправляет на страницу с ограниченным доступом. Это подразумевает, что либо у вас есть общий аккаунт для просмотра ограниченного содержимого (он же guess account), либо вы будете создавать отдельные QR-коды для каждой комбинации пользователь/url.