Kullanıcıların yalnızca e-postalarını (kullanıcı adı, parola yok) kullanarak oturum açmalarına izin veren bir kimlik doğrulama arka planı oluşturmak istiyorum.Özel kimlik doğrulama arka sonu. Django
İşte denedim.
backends.py:
from django.conf import settings
from django.contrib.auth.models import User
class EmailAuthBackend(object):
def authenticate(self, username=None, password=None):
try:
user = User.objects.get(email=username)
if user:
return user
except User.DoesNotExist:
return None
settings.py:
AUTHENTICATION_BACKENDS = (
'path_to.backends.EmailAuthBackend',
'django.contrib.auth.backends.ModelBackend',
)
html:
<form method="post" action="{% url myproject.views.test %}">
{% csrf_token %}
<input type="text" name="email" value=""/>
<button type="submit">Valider</button>
</form>
görünüşüdür:
def test(request):
email = ''
if 'email' in request.POST:
email = request.POST.get('email')
if not User.objects.filter(email=email):
User.objects.create(email=email)
user = authenticate(username=email)
if user is not None:
if user.is_active:
auth_login(request, user)
return HttpResponseRedirect(reverse('home'))
Çalışmıyor, kullanıcının kimliği doğrulanmamış. G/yönetici gittiğinde ben de bu hata var:
AttributeError at /admin/logout/
'EmailAuthBackend' object has no attribute 'get_user'
TEŞEKKÜRLER. En kısa zamanda cevabı kabul ediyorum. – Marcolac