首頁  >  文章  >  後端開發  >  Django使用者認證系統(一)User對象

Django使用者認證系統(一)User對象

黄舟
黄舟原創
2016-12-23 17:41:071252瀏覽

User物件

User物件是認證系統的核心。用戶物件通常用來代表網站的用戶,並支援例如存取控制、註冊用戶、關聯創建者和內容等。在Django認證框架中只有一個使用者類,例如超級使用者('superusers’)或('staff')使用者只不過是相同使用者物件設定了不同屬性而已。

缺省欄位Fields

username

使用者名稱,必需欄位。 30個字元或更少,可以包含 _, @, +, . 和 - 字元。

first_name
可選。 30 characters or fewer.

last_name
可選。 30 characters or fewer.

email
郵箱,可選。 Email address.

passWord
密碼,必需。 Django不是以明文儲存密碼的,而是儲存雜湊值。

groups
用戶群組。 Many-to-many relationship to Group

user_permissions
使用者權限。 Many-to-many relationship to Permission

   groups = models.ManyToManyField(Group, verbose_name=_('groups'),
      willbank=True, will text                             ' 。   user_permissions = models.ManyToManyField(Permission,
       verbose_name=_('user permissions'), blank =True,
       help_text=_('Specific permissions for this user.'),
       related_name="user_set", related_query_name="user")


。決定使用者是否可以存取admin管理介面。預設False。

is_active

Boolean。 用戶是否活躍,預設True。一般不刪除用戶,而是將用戶的is_active設為False。


is_superuser

Boolean。預設False。當設為True時,使用者獲得全部權限。


   def has_perm(self, perm, obj=None):

       """

       Returns True if the user has the specified mission. backends, but returns immediately if any
       backend returns True. Thus, a user who has permission from a single

       auth backend is assumed to have permission in general. If an object is       .Rovided, permissions for spec   this specare no..Rovided, permissions for spec  .


       # Active superusers have all permissions.
       if self. is_active and self.is_superuser:
           return True

       # Otherwise we need to check the backends.
 # Otherwise we need to check the backends.  

last_login

上一次的登入時間,為datetime對象,預設為當時的時間。

user.last_login = timezone.now()

date_joined

使用者建立的時間

方法Methods

is_anonymous()

方法Methods


is_anonymous()

是否為匿名使用者。

is_authenticated()

用戶是否通過驗證,登陸。

get_full_name()

回傳first_name plus the last_name, with a space in between.

get_short_name()

回傳first_name.

set_short_name()

回傳first_name.

set_password(raw_pass)。


check_password(raw_password)

驗證密碼。


get_group_permissions(obj=None)

傳回使用者群組權限的集合。


get_all_permissions(obj=None)

傳回使用者所有的​​權限集合。


has_perm(perm, obj=None)

用戶是否具有某個權限。 perm的格式是 ".". 


has_perms(perm_list, obj=None)

使用者是否具有權限清單中的每個權限。


建立使用者

由於User物件的密碼不是明文儲存的,所以建立User物件時與通常的Model create不同,需用內建的create_user()方法。

>>> from django.contrib.auth.models import User
>>> user = User.objects.create_user('john', 'lennon@thebeatles.com', 'johnpassword')

# Atuser this point, 腳# Atuser is a User object that has already been saved
# to the database. You can continue to change its attributes
# if you want to change other fields.
>>> user.last_name = 'Lennon'user> . ()

當然也可以在admin介面中加入使用者。

建立superusers

$ python manage.py createsuperuser --username=joe --email=joe@example.com


修改密碼

使用內建的set_password()方法。

>>> from django.contrib.auth.models import User

>>> u = User.objects.get(username='john')
>>> u.set_password('new password')
>>> u.save()

驗證使用者

authenticate()

驗證給予的username和password是否是有效使用者。如果有效,則傳回一個User對象,無效則傳回None。

from django.contrib.auth import authenticate

user = authenticate(username='john', password='secret')
if user is not None:
幫助   print 。
   print ("The username and password were incorrect.")


 以上就是Django使用者認證系統(一)User物件的內容,更多相關內容請關注PHP中文網(www.php.cn)!




陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn