django.contrib.auth¶
Dokumen ini menyediakan bahan acuan API untuk komponen-komponen dari sistem otentifikasi Django. Untuk rincian lebih pada penggunaan dari komponen-komponen ini atau bagaimana menyesuaikan autentifikasi dan otorisasi lihat authentication topic guide.
Model User¶
Bidang¶
-
class
models.User¶ Obyek
Usermempunyai bidang berikut:-
username¶ Diwajibkan. 150 karakter atau lebih sedikit. Nama pengguna dapat mengandung alfanumerik,
_,@,+,.dan-karakter.max_lengthharus cukup untuk banyak penggunaan kasus. Jika anda butuh panjang lebih, harap gunakan custom user model. Jika anda menggunakan MySQL dengan penyandianutf8mb4(dianjurkan untuk dukungan Unicode sesuai), tentukan kebanyakanmax_length=191karena MySQL hanya dapat membuat unik indeks dengan 192 karakter dalam kasus itu secara awalan.Nama pengguna dan Unicode
Django aslinya menerima hanya huruf ASCII dalam nama pengguna. Meskipun itu pilhan tidak disengaja, karakter Unicode selalu diterima ketika menggunakan Python 3.0. Django 1.10 secara resmi menambahkan dukungan Unicode dalam nama pengguna, menjaga perilaku hanya-ASCII pada Python 2.
Changed in Django 1.10:max_lengthmeningkat dari 30 menjadi 150 karakter.
-
first_name¶ Pilihan. 30 karakter atau sedikit.
-
last_name¶ Pilihan. 30 karakter atau sedikit.
-
email¶ Pilihan. Alamat surel.
-
password¶ Diwajibkan. Sebuah campuran dari, dan metadata tentang, sandi. (Django tidak menyimpan sandi mentah.) Sandi mentah dapat berubah-ubah lama dan dapat mengandung karakter apapun. Lihat password documentation.
-
user_permissions¶ Hubungan banyak-ke-banyak ke
Permission
-
is_staff¶ Boolean. Menandai apakah pengguna ini dapat mengakses situs admin.
-
is_active¶ Boolean. Menunjukkan apakah akun pengguna ini harus dianggap aktif. Kami menganjurkan bahwa anda menyetel bendera ini menjadi
Falsedaripada menghapus akun-akun; cara itu, jika aplikasi anda mempunyai foreign key apapun ke pengguna, foreign key tidak akan rusak.Ini tidak perlu mengendalikan apakah atau tidak pengguna dapat masuk. Backend otentifikasi tidak dibutuhkan untuk memeriksa untuk bendera
is_flagtetap backend awalan (ModelBackend) danRemoteUserBackendmelakukannya. Anda dapat menggunakanAllowAllUsersModelBackendatauAllowAllUsersRemoteUserBackendjika anda ingin mengizinkan pengguna tidak aktif untuk masuk. Di kasus ini, anda akan juga ingin menyesuaikanAuthenticationFormdigunakan oleh tampilanlogin()ketika itu menolak pengguna tidak aktif. Waspada bahwa metode pemeriksaan-perizinan sepertihas_perm()dan otentifikasi di admin Django semua mengembalikanFalseuntuk pengguna tidak aktif.Changed in Django 1.10:Dalam versi terlama,
ModelBackenddanRemoteUserBackendmengizinkan pengguna tidak aktif untuk di autentifikasi.
-
is_superuser¶ Boolean. Menunjuk bahwa pengguna ini mempunyai semua perizinan tanpa secara jelas menetapkan mereka.
-
last_login¶ Tanggalwaktu dari masuk terakhir pengguna.
-
date_joined¶ Sebuah datetime menunjukkan ketika akun telah dibuat. Adalah disetel ke tanggal/waktu saat ini secara awalan ketika akun dibuat.
-
Atribut¶
-
class
models.User -
is_authenticated¶ Atribut hanya-baca yang selalu
True(sebagai lawanAnonymousUser.is_authenticatedyang selaluFalse). Ini adalah cara untuk memberitahu jika pengguna telah diotentifikasi. Ini tidak berarti perizinan apapun dan tidak memeriksa jika pengguna adalah aktif atau mempunyai sesi sah. Meskipun secara biasa anda akan memeriksa atribut ini padarequest.useruntuk menemukan apakah itu telah dikumpulkan olehAuthenticationMiddleware(mewakili pengguna masuk saat ini), anda harus mengetahui atribut ini adalahTrueuntuk tiap instanceUser.Changed in Django 1.10:Di versi terlama, ini adalah metode . Dukungan kesesuaian kebelakang mendukung untuk menggunakannya sebagai cara akan dipindahkan di Django 2.0.
-
is_anonymous¶ Atribut hanya-baca yaitu selalu
False. Ini adalah jalan untuk membedakan obyekUserandAnonymousUser. Umumnya, anda harus memilih menggunakanis_authenticatedpada atribut ini.Changed in Django 1.10:Di versi terlama, ini adalah metode . Dukungan kesesuaian kebelakang mendukung untuk menggunakannya sebagai cara akan dipindahkan di Django 2.0.
-
Cara¶
-
class
models.User -
get_username()¶ Mengembalikan nama pengguna untuk pengguna. Sejak model
Userdapat bertukar, anda haus menggunakan metode ini daripada mengacu atribut nama pengguna secara langsung.
-
get_full_name()¶ Mengembalikan
first_nameditambahlast_name, dengan spasi diantaranya.
-
get_short_name()¶ Mengembalikan
first_name.
-
set_password(raw_password)¶ Setel sandi pengguna ke string mentah yang diberikan, merawat campuran sandi. Tidak menyimpan obyek
User.Ketika
raw_passwordadalahNone, sandi akan disetel menjadi sebuah sandi tidak berguna, seperti jikaset_unusable_password()digunakan.
-
check_password(raw_password)¶ Mengembalikan
Truejika deretan karakter mentah yang diberikan adalah sandi benar untuk pengguna. (Ini merawat hash sandi dalam membuat perbandingan.)
-
set_unusable_password()¶ Tandai pengguna sebagai tidak mempunyai sandi tidak disetel. Ini tidak sama seperti memiliki string kosong untuk sebuah sandi.
check_password()untuk pengguna ini tidak akan pernah mengembalikanTrue. Tidak menyimpan obyekUser.Anda mungkin butuh ini jika otentifikasi untuk aplikasi anda memakan tempat terhadap sumber luar yang ada seperti pelipat LDAP.
-
has_usable_password()¶ Mengembalikan
Falsejikaset_unusable_password()telah dipanggil untuk pengguna ini.
-
get_group_permissions(obj=None)¶ Mengembalikan deretan karakter kumpulan perizinan yang pengguna punyai, melalui kelompok mreka.
Jika
objdiloloskan, hanya mengembalikan perizinan kelompok untuk obyek tertentu ini.
-
get_all_permissions(obj=None)¶ Mengembalikan sekumpulan deretan karakter perizinan yang pengguna punyai, kedua melalui perizinan kelompok dan pengguna.
Jika
objdiloloskan. hanya mengembalikan perizinan untuk obyek tertentu ini.
-
has_perm(perm, obj=None)¶ Mengembalikan
Truejika pengguna mempunyai perizinan tertentu, dimana perm dalam bentuk"<app label>.<permission codename>"(lihat dokumentasi pada permissions). Jika pengguna tidak aktif, metode ini akan selalu mengembalikanFalse.Jika
objdiloloskan, metode ini tidak akan memeriksa untuk sebuah perizinan untuk model, tetapi untuk obyek tertentu ini.
-
has_perms(perm_list, obj=None)¶ Mengembalikan
Truejika pengguna mempunyai setiap perizinan tertentu, dimana setiap perizinan dalam bentuk"<app label>.<permission codename>". Jika pengguna tidak aktif, metode ini akan selalu mengembalikanFalse.Jika
objdiloloskan, metode ini tidak akan memeriksa untuk perizinan-perizinan untuk model, tetapi untuk obyek tertentu.
-
has_module_perms(package_name)¶ Mengembalikan
Truejika pengguna mempunyai perizinan apapun di paket yang diberikan (label aplikasi Django). Jika pengguna tidak aktif, metode ini akan selalu mengembalikanFalse.
-
email_user(subject, message, from_email=None, **kwargs)¶ Mengirim sebuah surel ke pengguna. Jika
from_emailadalahNone, Django menggunakanDEFAULT_FROM_EMAIL.**kwargsapapun dilewatkan ke panggilansend_mail()pokok
-
Pengelola metode¶
-
class
models.UserManager¶ Model
Usermempunyai pengelola penyesuaian yang mempunyai metode pembantu berikut (sebagai tambahan pada metode disediakan olehBaseUserManager):-
create_user(username, email=None, password=None, **extra_fields)¶ Buat, simpan dan mengembalikan
User.usernamedanpassworddisetel sesuai yang diberikan. Bagian ranah dariemailadalah otomatis mengubah ke huruf kecil, dan mengembalikan obyekUserakan menyetelis_activekeTrue.Jika tidak ada sandi disediakan,
set_unusable_password()akan dipanggil.Argumen kata kunci
extra_fieldsdilewatkan melalui metodeUser’s__init__untuk mengizinkan mengatur bidang yang berubah-ubah pada custom user model.Lihat Membuat pengguna sebagai contoh penggunaan.
-
create_superuser(username, email, password, **extra_fields)¶ Sama seperti
create_user(), but setsis_staffdanis_superusermenjadiTrue.
-
Obyek AnonymousUser¶
-
class
models.AnonymousUser¶ django.contrib.auth.models.AnonymousUseradalah kelas yang menerapkan antarmukadjango.contrib.auth.models.User, dengan perbedaan ini:id selalu
None.usernameadalah selalu string kosong.get_username()selalu mengembalikan deretan kalimat kosong.is_anonymousadalahTruedaripadaFalse.is_authenticatedadalahFalsedaripadaTrue.is_staffdanis_superuseradalah selaluFalse.is_activeadalah selaluFalse.groupsdanuser_permissionsadalah selalu kosong.set_password(),check_password(),save()dandelete()memunculkanNotImplementedError.
Dalam penerapannya, anda mungkin tidak butuh menggunakan obyek AnonymousUser anda sendiri, tetapi mereka digunakan oleh permintaan Jaringan, seperti yang dijelaskan di bagian selanjutnya.
Model Permission¶
-
class
models.Permission¶
Bidang¶
Obyek Permission mempunyai bidang berikut:
Cara¶
Obyek Permission mempunyai standar cara akses-data seperti lainnya Django model.
Model Group¶
-
class
models.Group¶
Bidang¶
Obyek Group mempunyai bidang berikut:
-
class
models.Group -
name¶ Dibutuhkan. 80 karakter atau sedikit. Karakter apapun diizinkan. Contoh:
'Awesome Users'.
-
permissions¶ Bidang banyak-ke-banyak ke
Permission:group.permissions.set([permission_list]) group.permissions.add(permission, permission, ...) group.permissions.remove(permission, permission, ...) group.permissions.clear()
-
Pengesah¶
-
class
validators.ASCIIUsernameValidator¶ - New in Django 1.10.
Sebuah pengesah bidang mengizinkan hanya huruf ASCII, sebagai tambahan pada
@,.,+,-, dan_. Pengesah awalan untukUser.usernamepada Python 2.
-
class
validators.UnicodeUsernameValidator¶ - New in Django 1.10.
Sebuah pengesah bidang mengizinkan huruf Unicode, sebagai tambahan pada
@,.,+,-, dan_. Pengesah awalan untukUser.usernamepada Python 3.
Sinyal masuk dan keluar¶
Kerangka kerja autentifikasi menggunakan signals berikut yang dapat digunakan untuk pemberitahuan ketika pengguna masuk atau keluar.
-
user_logged_in()¶ Terkirim ketika pengguna berhasil masuk.
Argumen dikirim dengan dinyal ini:
senderKelas pengguna yang baru masuk.
requestInstance
HttpRequestsaat ini.userInstance pengguna yang baru masuk.
-
user_logged_out()¶ Dikirim ketika metode keluar dipanggil.
senderSeperti diatas: kelas dari pengguna yang baru keluar atau
Nonejika pengguna tidak terautentifikasi.requestInstance
HttpRequestsaat ini.userAntarmuka pengguna yang baru keluar atau
Nonejika pengguna tidak terautentifikasi.
-
user_login_failed()¶ Terkirim ketika pengguna gagal berhasil masuk
senderNama modul digunakan untuk pengecekan keaslian.
credentials- A dictionary of keyword arguments containing the user credentials that were
passed to
authenticate()or your own custom authentication backend. Credentials matching a set of ‘sensitive’ patterns, (including password) will not be sent in the clear as part of the signal.
Backend pembuktian keaslian¶
This section details the authentication backends that come with Django. For information on how to use them and how to write your own authentication backends, see the Other authentication sources section of the User authentication guide.
Tersedia backend autentifikasi¶
Backend berikut tersedia di django.contrib.auth.backends:
-
class
ModelBackend¶ This is the default authentication backend used by Django. It authenticates using credentials consisting of a user identifier and password. For Django’s default user model, the user identifier is the username, for custom user models it is the field specified by USERNAME_FIELD (see Customizing Users and authentication).
Itu juga menangangi model perizinan awalan seperti ditentukan untuk
UserdanPermissionsMixin.has_perm(),get_all_permissions(),get_user_permissions(), andget_group_permissions()allow an object to be passed as a parameter for object-specific permissions, but this backend does not implement them other than returning an empty set of permissions ifobj is not None.-
authenticate(username=None, password=None, **kwargs)¶ Tries to authenticate
usernamewithpasswordby callingUser.check_password. If nousernameis provided, it tries to fetch a username fromkwargsusing the keyCustomUser.USERNAME_FIELD. Returns an authenticated user orNone.
-
get_user_permissions(user_obj, obj=None)¶ Returns the set of permission strings the
user_objhas from their own user permissions. Returns an empty set ifis_anonymousoris_activeisFalse.
-
get_group_permissions(user_obj, obj=None)¶ Returns the set of permission strings the
user_objhas from the permissions of the groups they belong. Returns an empty set ifis_anonymousoris_activeisFalse.
-
get_all_permissions(user_obj, obj=None)¶ Returns the set of permission strings the
user_objhas, including both user permissions and group permissions. Returns an empty set ifis_anonymousoris_activeisFalse.
-
has_perm(user_obj, perm, obj=None)¶ Uses
get_all_permissions()to check ifuser_objhas the permission stringperm. ReturnsFalseif the user is notis_active.
-
has_module_perms(self, user_obj, app_label)¶ Mengembalikan apakah
user_objmempunyai perizinan apapun padaapp_labelaplikasi.
-
user_can_authenticate()¶ - New in Django 1.10.
Returns whether the user is allowed to authenticate. To match the behavior of
AuthenticationFormwhichprohibits inactive users from logging in, this method returnsFalsefor users withis_active=False. Custom user models that don’t have anis_activefield are allowed.
-
-
class
AllowAllUsersModelBackend¶ - New in Django 1.10.
Sama seperti
ModelBackendkecuali bahwa itu menolak pengguna tidak aktif karenauser_can_authenticate()selalu mengembalikanTrue.Ketika menggunakan backend, anda akan ingin menyesuaikan
AuthenticationFormdigunakan oleh tampilanlogin()dengan mengesampingkan metodeconfirm_login_allowed()ketika itu menolak pengguna tidak aktif.
-
class
RemoteUserBackend¶ Use this backend to take advantage of external-to-Django-handled authentication. It authenticates using usernames passed in
request.META['REMOTE_USER']. See the Authenticating against REMOTE_USER documentation.Jika anda butuh lebih kendali, anda dapat membuat backend autentifikasi sendiri yang mewarisi dari kelas ini dan mengesampingkan atribut ini atau metode:
-
RemoteUserBackend.create_unknown_user¶ TrueatauFalse. Menentukan apakah atau tidak obyek pengguna dibuat jika belum di basisdata Awalan menjadiTrue.
-
RemoteUserBackend.authenticate(remote_user)¶ The username passed as
remote_useris considered trusted. This method simply returns the user object with the given username, creating a new user object ifcreate_unknown_userisTrue.Mengembalikan
Nonejikacreate_unknown_useradalahFalsedan obyekUserdengan nama pengguna yang diberikan tidak ditemukan dalam basisdata.
-
RemoteUserBackend.clean_username(username)¶ Melakukan pembersihan apapun pada
username(sebagai contoh melucuti informasi LDAP DN) sebelum menggunakan itu untuk mendapatkan atau membuat sebuah obyek user. Mengembalikan nama pengguna dibersihkan.
-
RemoteUserBackend.configure_user(user)¶ Configures a newly created user. This method is called immediately after a new user is created, and can be used to perform custom setup actions, such as setting the user’s groups based on attributes in an LDAP directory. Returns the user object.
-
RemoteUserBackend.user_can_authenticate()¶ - New in Django 1.10.
Mengembalikan apaka pengguna diizinkan untuk autentifikasi. Metode ini mengembalikan
Falseuntuk pengguna denganis_active=False. Penyesuaian model user yang tidak mempunyai sebuah bidangis_activeadalah diizinkan.
-
class
AllowAllUsersRemoteUserBackend¶ - New in Django 1.10.
Sama seperti
RemoteUserBackendkecuali bahwa itu menolak pengguna tidak aktif karenauser_can_authenticate()selalu mengembalikanTrue.
Utility functions¶
-
get_user(request)[sumber]¶ Mengembalikan instance model user terhubung dengan sesi
requestdiberikanIt checks if the authentication backend stored in the session is present in
AUTHENTICATION_BACKENDS. If so, it uses the backend’sget_user()method to retrieve the user model instance and then verifies the session by calling the user model’sget_session_auth_hash()method.Returns an instance of
AnonymousUserif the authentication backend stored in the session is no longer inAUTHENTICATION_BACKENDS, if a user isn’t returned by the backend’sget_user()method, or if the session auth hash doesn’t validate.