我正在使用带有 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
到目前为止,它工作正常。但是,我需要在模板中读取当前登录用户的后端类。
Usingrequest.user.backend
表示user
没有属性后端......我无法从会话中读取它(使用request.session._auth_user_backend
),因为 Django 模板系统抱怨“变量和属性可能不以下划线开头”。
我正在使用django.contrib.auth.views.login
允许用户登录。我错过了什么?