我正在使用自定義身份驗證後端與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