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.
User
¶models.
User
¶Obyek User
mempunyai bidang berikut:
username
¶Diwajibkan. 150 karakter atau lebih sedikit. Nama pengguna dapat mengandung alfanumerik, _
, @
, +
, .
dan -
karakter.
max_length
harus cukup untuk banyak penggunaan kasus. Jika anda butuh panjang lebih, harap gunakan custom user model. Jika anda menggunakan MySQL dengan penyandian utf8mb4
(dianjurkan untuk dukungan Unicode sesuai), tentukan kebanyakan max_length=191
karena 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.
max_length
meningkat 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 False
daripada 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_flag
tetap backend awalan (ModelBackend
) dan RemoteUserBackend
melakukannya. Anda dapat menggunakan AllowAllUsersModelBackend
atau AllowAllUsersRemoteUserBackend
jika anda ingin mengizinkan pengguna tidak aktif untuk masuk. Di kasus ini, anda akan juga ingin menyesuaikan AuthenticationForm
digunakan oleh tampilan login()
ketika itu menolak pengguna tidak aktif. Waspada bahwa metode pemeriksaan-perizinan seperti has_perm()
dan otentifikasi di admin Django semua mengembalikan False
untuk pengguna tidak aktif.
Dalam versi terlama, ModelBackend
dan RemoteUserBackend
mengizinkan 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.
models.
User
is_authenticated
¶Atribut hanya-baca yang selalu True
(sebagai lawan AnonymousUser.is_authenticated
yang selalu False
). 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 pada request.user
untuk menemukan apakah itu telah dikumpulkan oleh AuthenticationMiddleware
(mewakili pengguna masuk saat ini), anda harus mengetahui atribut ini adalah True
untuk tiap instance User
.
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 obyek User
and AnonymousUser
. Umumnya, anda harus memilih menggunakan is_authenticated
pada atribut ini.
Di versi terlama, ini adalah metode . Dukungan kesesuaian kebelakang mendukung untuk menggunakannya sebagai cara akan dipindahkan di Django 2.0.
models.
User
get_username
()¶Mengembalikan nama pengguna untuk pengguna. Sejak model User
dapat bertukar, anda haus menggunakan metode ini daripada mengacu atribut nama pengguna secara langsung.
get_full_name
()¶Mengembalikan first_name
ditambah last_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_password
adalah None
, sandi akan disetel menjadi sebuah sandi tidak berguna, seperti jika set_unusable_password()
digunakan.
check_password
(raw_password)¶Mengembalikan True
jika 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 mengembalikan True
. Tidak menyimpan obyek User
.
Anda mungkin butuh ini jika otentifikasi untuk aplikasi anda memakan tempat terhadap sumber luar yang ada seperti pelipat LDAP.
has_usable_password
()¶Mengembalikan False
jika set_unusable_password()
telah dipanggil untuk pengguna ini.
get_group_permissions
(obj=None)¶Mengembalikan deretan karakter kumpulan perizinan yang pengguna punyai, melalui kelompok mreka.
Jika obj
diloloskan, 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 obj
diloloskan. hanya mengembalikan perizinan untuk obyek tertentu ini.
has_perm
(perm, obj=None)¶Mengembalikan True
jika pengguna mempunyai perizinan tertentu, dimana perm dalam bentuk "<app label>.<permission codename>"
(lihat dokumentasi pada permissions). Jika pengguna tidak aktif, metode ini akan selalu mengembalikan False
.
Jika obj
diloloskan, metode ini tidak akan memeriksa untuk sebuah perizinan untuk model, tetapi untuk obyek tertentu ini.
has_perms
(perm_list, obj=None)¶Mengembalikan True
jika pengguna mempunyai setiap perizinan tertentu, dimana setiap perizinan dalam bentuk "<app label>.<permission codename>"
. Jika pengguna tidak aktif, metode ini akan selalu mengembalikan False
.
Jika obj
diloloskan, metode ini tidak akan memeriksa untuk perizinan-perizinan untuk model, tetapi untuk obyek tertentu.
has_module_perms
(package_name)¶Mengembalikan True
jika pengguna mempunyai perizinan apapun di paket yang diberikan (label aplikasi Django). Jika pengguna tidak aktif, metode ini akan selalu mengembalikan False
.
email_user
(subject, message, from_email=None, **kwargs)¶Mengirim sebuah surel ke pengguna. Jika from_email
adalah None
, Django menggunakan DEFAULT_FROM_EMAIL
. **kwargs
apapun dilewatkan ke panggilan send_mail()
pokok
models.
UserManager
¶Model User
mempunyai pengelola penyesuaian yang mempunyai metode pembantu berikut (sebagai tambahan pada metode disediakan oleh BaseUserManager
):
create_user
(username, email=None, password=None, **extra_fields)¶Buat, simpan dan mengembalikan User
.
username
dan password
disetel sesuai yang diberikan. Bagian ranah dari email
adalah otomatis mengubah ke huruf kecil, dan mengembalikan obyek User
akan menyetel is_active
ke True
.
Jika tidak ada sandi disediakan, set_unusable_password()
akan dipanggil.
Argumen kata kunci extra_fields
dilewatkan melalui metode User
’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 sets is_staff
dan is_superuser
menjadi True
.
AnonymousUser
¶models.
AnonymousUser
¶django.contrib.auth.models.AnonymousUser
adalah kelas yang menerapkan antarmuka django.contrib.auth.models.User
, dengan perbedaan ini:
id selalu None
.
username
adalah selalu string kosong.
get_username()
selalu mengembalikan deretan kalimat kosong.
is_anonymous
adalah True
daripada False
.
is_authenticated
adalah False
daripada True
.
is_staff
dan is_superuser
adalah selalu False
.
is_active
adalah selalu False
.
groups
dan user_permissions
adalah selalu kosong.
set_password()
, check_password()
, save()
dan delete()
memunculkan NotImplementedError
.
Dalam penerapannya, anda mungkin tidak butuh menggunakan obyek AnonymousUser
anda sendiri, tetapi mereka digunakan oleh permintaan Jaringan, seperti yang dijelaskan di bagian selanjutnya.
Permission
¶models.
Permission
¶Obyek Permission
mempunyai bidang berikut:
Obyek Permission
mempunyai standar cara akses-data seperti lainnya Django model.
Group
¶models.
Group
¶Obyek Group
mempunyai bidang berikut:
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()
validators.
ASCIIUsernameValidator
¶Sebuah pengesah bidang mengizinkan hanya huruf ASCII, sebagai tambahan pada @
, .
, +
, -
, dan _
. Pengesah awalan untuk User.username
pada Python 2.
validators.
UnicodeUsernameValidator
¶Sebuah pengesah bidang mengizinkan huruf Unicode, sebagai tambahan pada @
, .
, +
, -
, dan _
. Pengesah awalan untuk User.username
pada Python 3.
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:
sender
Kelas pengguna yang baru masuk.
request
Instance HttpRequest
saat ini.
user
Instance pengguna yang baru masuk.
user_logged_out
()¶Dikirim ketika metode keluar dipanggil.
sender
Seperti diatas: kelas dari pengguna yang baru keluar atau None
jika pengguna tidak terautentifikasi.
request
Instance HttpRequest
saat ini.
user
Antarmuka pengguna yang baru keluar atau None
jika pengguna tidak terautentifikasi.
user_login_failed
()¶Terkirim ketika pengguna gagal berhasil masuk
sender
Nama modul digunakan untuk pengecekan keaslian.
credentials
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.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.
Backend berikut tersedia di django.contrib.auth.backends
:
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 User
dan PermissionsMixin
.
has_perm()
, get_all_permissions()
, get_user_permissions()
,
and get_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 if
obj is not None
.
authenticate
(username=None, password=None, **kwargs)¶Tries to authenticate username
with password
by calling
User.check_password
. If no username
is provided, it tries to fetch a username from kwargs
using the
key CustomUser.USERNAME_FIELD
. Returns an
authenticated user or None
.
get_user_permissions
(user_obj, obj=None)¶Returns the set of permission strings the user_obj
has from their
own user permissions. Returns an empty set if
is_anonymous
or
is_active
is False
.
get_group_permissions
(user_obj, obj=None)¶Returns the set of permission strings the user_obj
has from the
permissions of the groups they belong. Returns an empty set if
is_anonymous
or
is_active
is False
.
get_all_permissions
(user_obj, obj=None)¶Returns the set of permission strings the user_obj
has, including both
user permissions and group permissions. Returns an empty set if
is_anonymous
or
is_active
is False
.
has_perm
(user_obj, perm, obj=None)¶Uses get_all_permissions()
to check if user_obj
has the
permission string perm
. Returns False
if the user is not
is_active
.
has_module_perms
(self, user_obj, app_label)¶Mengembalikan apakah user_obj
mempunyai perizinan apapun pada app_label
aplikasi.
user_can_authenticate
()¶Returns whether the user is allowed to authenticate. To match the
behavior of AuthenticationForm
which prohibits inactive users from logging in
,
this method returns False
for users with is_active=False
. Custom user models that
don’t have an is_active
field are allowed.
AllowAllUsersModelBackend
¶Sama seperti ModelBackend
kecuali bahwa itu menolak pengguna tidak aktif karena user_can_authenticate()
selalu mengembalikan True
.
Ketika menggunakan backend, anda akan ingin menyesuaikan AuthenticationForm
digunakan oleh tampilan login()
dengan mengesampingkan metode confirm_login_allowed()
ketika itu menolak pengguna tidak aktif.
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
¶True
atau False
. Menentukan apakah atau tidak obyek pengguna dibuat jika belum di basisdata Awalan menjadi True
.
RemoteUserBackend.
authenticate
(remote_user)¶The username passed as remote_user
is considered trusted. This method
simply returns the user object with the given username, creating a new
user object if create_unknown_user
is True
.
Mengembalikan None
jika create_unknown_user
adalah False
dan obyek User
dengan 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
()¶Mengembalikan apaka pengguna diizinkan untuk autentifikasi. Metode ini mengembalikan False
untuk pengguna dengan is_active=False
. Penyesuaian model user yang tidak mempunyai sebuah bidang is_active
adalah diizinkan.
AllowAllUsersRemoteUserBackend
¶Sama seperti RemoteUserBackend
kecuali bahwa itu menolak pengguna tidak aktif karena user_can_authenticate()
selalu mengembalikan True
.
get_user
(request)[sumber]¶Mengembalikan instance model user terhubung dengan sesi request
diberikan
It checks if the authentication backend stored in the session is present in
AUTHENTICATION_BACKENDS
. If so, it uses the backend’s
get_user()
method to retrieve the user model instance and then verifies
the session by calling the user model’s
get_session_auth_hash()
method.
Returns an instance of AnonymousUser
if the authentication backend stored in the session is no longer in
AUTHENTICATION_BACKENDS
, if a user isn’t returned by the
backend’s get_user()
method, or if the session auth hash doesn’t
validate.
Apr 04, 2017