#models.py 自訂的model
class MyUser(models.Model):
username = models.CharField(max_length=32, verbose_name=u'使用者名稱')
is_superuser = models.BooleanField(default=False, verbose_name=u'是否是超級使用者')
is_active = models.BooleanField(default=False, verbose_name=u'啟用')
password = models.CharField(max_length=128, verbose_name=u'密碼')
created = models.DateTimeField(auto_now_add=True, verbose_name=u'建立時間')
last_login= models.DateTimeField(auto_now=True, verbose_name=u'更新時間')
def __unicode__(self):
return self.username
def is_authenticated(self):
return True
def hashed_password(self, password=None):
if not password:
return self.password
else:
return hashlib.md5(password).hexdigest()
def check_password(self, password):
if self.hashed_password(password) == self.password:
return True
return False
class Meta:
verbose_name = _(u'管理員')
verbose_name_plural = _(u'管理員')
#auth.py 定義一個後端器,用於說明後端驗證機制用到得是MyUser自訂model
class MyBackend:
def authenticate(self, username=None, password=None):
try:
user = MyUser.objects.get(username=username)
except MyUser.DoesNotExist:
pass
else:
if user.check_password(password):
return user
return None
def get_user(self, user_id):
try:
return MyUser.objects.get(pk=user_id)
except MyUser.DoesNotExist:
return None
#settings.py 配置後端器
AUTHENTICATION_BACKENDS = (
'myapp.auth.MyBackend',
)