我正在使用自定义身份验证后端与Django,以自动创建和从旧系统登录用户。我的Backend
类是这样的:Django - 阅读当前的用户认证后端类
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
来允许用户登录。我错过了什么?
btw此认证方案看起来真的不安全。 – mak 2015-02-08 19:24:00