Я использую пользовательский бэкэнд аутентификации с Django для автоматического создания и входа пользователей из устаревшей системы.Мой класс Backend
такой:
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User
from sfi.models import Employee
import base64, hashlib
class SFIUserBackend(ModelBackend):
def authenticate(self, username=None, password=None):
if not username or not password:
return
digest = base64.standard_b64encode(hashlib.md5(password).digest())
user = None
try:
employee = Employee.objects.get(login=username, passwd=digest)
user, created = User.objects.get_or_create(username=username)
if created:
# setting attributes
user.first_name = employee.names[:30]
user.last_name = employee.surnames[:30]
user.is_staff = True
user.save()
except Employee.DoesNotExist:
pass
return user
Пока все работает нормально.Тем не менее мне нужно прочитать внутренний класс текущего зарегистрированного пользователя в шаблоне.
Использование request.user.backend
говорит о том, что user
не имеет атрибута внутреннего интерфейса ... и я не могу прочитать его из сеанса(используя request.session._auth_user_backend
), поскольку система шаблонов Django жалуется, что «Переменные и атрибуты могут не начинаться с подчеркивания».
Я использую django.contrib.auth.views.login
, чтобы разрешить пользователям вход в систему.Что мне не хватает?