一、ITIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central Computing and Telecommunications Agency)在20世纪80年代末制订,现由英国商务部OGC(Office of Government Commerce)负责管理,主要适用于IT服务管理(ITSM)。ITIL为企业的IT服务管理实践提供了一个客观、严谨、可量化的标准和规范。

二、Django用户自定义认证

1、创建models.py

from
django.db
import
models
import
hashlib
#自己的后台数据库表.account
class
Account(models.Model):
    
username
=
models.CharField(u
"用户名"
,blank
=
True
,max_length
=
32
)
    
password
=
models.CharField(u
"密码"
,blank
=
True
,max_length
=
50
)
    
domain
=
models.CharField(u
"可操作域名"
,blank
=
True
,max_length
=
256
,help_text
=
'填写多个域名,以,号分隔'
)
    
is_active
=
models.IntegerField(u
"is_active"
,blank
=
True
)
    
phone
=
models.CharField(u
"电话"
,max_length
=
50
)
    
mail
=
models.CharField(u
"邮箱"
,max_length
=
50
)
 
    
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:
        
#if password == self.password:
            
return
True
        
return
False
    
class
Meta:

        db_table = "account"

2、auth.py

rom django.contrib.auth.models import User

from
myauth.models
import
Account
class
MyCustomBackend:
 
    
def
authenticate(
self
, username
=
None
, password
=
None
):
        
try
:
            
user
=
Account.objects.get(username
=
username)
        
except
Account.DoesNotExist:
            
return
None
        
else
:
            
if
user.check_password(password):
                
try
:
                    
django_user
=
User.objects.get(username
=
user.username)
                
except
User.DoesNotExist:
                    
#当在django中找不到此用户,便创建这个用户
                    
django_user
=
User(username
=
user.username,password
=
user.password)
                    
django_user.is_staff
=
True
                    
django_user.save()
                
return
django_user
            
else
:
                
return
None
    
def
get_user(
self
, user_id):
        
try
:
            
return
User.objects.get(pk
=
user_id)
        
except
User.DoesNotExist:
            
return
None

3、把自己创建的表也加入到进去,admin.py

from
myauth.models
import
Account
from
django.contrib
import
admin
 
admin.site.register(Account)

4、在settings.py中添加认证:

AUTHENTICATION_BACKENDS
=
(
    
'myauth.auth.MyCustomBackend'
,
)