使用带有身份验证的auth.login(错误)

时间:2014-11-07 14:42:31

标签: django django-authentication

我创建了一个身份验证后端:

from login.models import zUser
import hashlib

class AuthBackend:
    def authenticate(self, username=None, password=None): #переписана функція для пошуку користувача в таблиці zusers
        password = hashlib.md5(password).hexdigest() #хешування отриманого пароля в md5
        try:
            user = zUser.objects.get(userpass = password, login = username)
        except zUser.DoesNotExist:
            return None
        return user

    def get_user(self, user_id): #повернути користувача за id
        try:
            user = zUser.objects.get(id=user_id)
        except zUser.DoesNotExist:
            return None
        return user

但在我看来,我打电话给auth.login(request, user),我有一个错误: 此模型中不存在以下字段,或者是m2m字段:last_login

def Login(request):
    if request.method == 'POST':
        username = request.POST.get('username') #введений логін
        password = request.POST.get('password').encode('utf-8') #введений пароль
        user = auth.authenticate(username = username, password = password)
        if user is not None:
            user_id = getattr(user, "userid") #отримання userid користувача
            auth.login(request, user)
            return redirect('/')
        else:
            return redirect('/') #перенаправлення на головну сторінку
    else:
        return render_to_response('index.html', context_instance=RequestContext(request))

然后我添加到设置:

AUTHENTICATION_BACKENDS = (
    'login.auth_backends.AuthBackend',
    'django.contrib.auth.ModelBackend'
)

但现在还有其他错误: 模块" django.contrib.auth.ModelBackend"没有定义" ModelBackend"属性/类

更新:这是我的zUser表

class zUser(models.Model): #модель користувача, створена по аналогії до таблиці zusers
    userpass = models.CharField(max_length=50, blank=True)
    telefon = models.CharField(max_length=25, blank=True)
    remark = models.CharField(max_length=250, blank=True)
    fio = models.CharField(max_length=50, blank=True)
    userid = models.DecimalField(unique=True, max_digits=65535, decimal_places=65535, blank=True,primary_key=True)
    changeonlogon = models.CharField(max_length=1, blank=True)
    userlocked = models.CharField(max_length=1, blank=True)
    login = models.CharField(max_length=300, blank=True)
    #crypto = models.CharField(max_length=300, blank=True)

    class Meta:
        managed = False
        db_table = 'zusers'

0 个答案:

没有答案