У меня есть этот код:Джанго Войти AttributeError: объект «AnonymousUser» не имеет атрибута «_meta»
from django.contrib.auth import logout, login, authenticate
...
if User.objects.filter(email=email).exists():
existing_user = User.objects.get(email=email)
user = authenticate(username=existing_user.username, password=existing_user.password)
login(request, user)
Согласно документации, это должно работать, но это не так, он дает мне ошибку:
request.session[SESSION_KEY] = user._meta.pk.value_to_string(user) AttributeError: 'AnonymousUser' object has no attribute '_meta'
Возможно, проблема возникает, потому что я использую аутентификацию JWT с помощью Django Rest Framework? Это просто API-интерфейс с поддержкой django, поэтому я думаю, что это другой сценарий, но я не понимаю, что может вызвать проблему.
Показать полный обзор. Но ваш код ** не имеет смысла **; 'authenticate' - это то, что получает пользователь, сравнивая с * хэшированным * паролем, сохраненным в базе данных. Нет смысла вводить пользователя отдельно, и здесь 'authenticate' будет * всегда * терпеть неудачу. –
Hi @DanielRoseman. Тогда как я могу войти в систему пользователя в представлении, не имея своего пароля? Приложение отправляет мне токен facebook, я подтверждаю токен с API-интерфейсом Fb, затем я получаю сообщение электронной почты и проверяю, существует ли он (остальное находится в вставленном мной коде), если пользователь с этим письмом существует, мне нужно для входа в систему этого пользователя. Я думал, что использование 'authenticate' и' login' решит его, но теперь я вижу, что это не так. – alejoss
Вы можете реализовать свой собственный интерфейс аутентификации для аутентификации пользователя без пароля. Здесь приведен пример аутентификации с токеном - https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#writing-an-authentication-backend. –