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
¶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.
first_name
¶Pilihan (blank=True
). 150 karakter atau sedikit.
last_name
¶Pilihan (blank=True
). 150 karakter atau sedikit.
email
¶Pilihan (blank=True
). 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 diperlukan mengendalikan apakah atau bukan pengguna dapat masuk. Backend autentifikasi tidak diwajibkan untuk memeriksa untuk tanda is_active
tetapi backend awalan (ModelBackend
) dan RemoteUserBackend
melakukannya. Anda dapat menggunakan class:~django.contrib.auth.backends.AllowAllUsersModelBackend atau AllowAllUsersRemoteUserBackend
jika anda ingin mengizinkan pengguna tidak aktif untuk masuk. Dalam kasus ini, anda akan juga ingin menyesuaikan AuthenticationForm
digunakan oleh LoginView
ketika itu menolak pengguna tidak aktif. Waspada bahwa metode pemeriksaan-perizinan seperti has_perm()
dan autentifikasi dalam admin Django semua mengembalikan False
untuk pengguna tidak aktif.
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
.
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.
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_user_permissions
(obj=None)¶Mengembalikan sekumpulan string perizinan yang pengguna miliki secara langsung.
Jika obj
dilewatkan, hanya mengembalikan perizinan pengguna untuk objek khusus 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)¶Returns True
if the user has the specified permission, where perm
is in the format "<app label>.<permission codename>"
. (see
documentation on permissions). If the user is
inactive, this method will always return False
. For an active
superuser, this method will always return True
.
Jika obj
diloloskan, metode ini tidak akan memeriksa untuk sebuah perizinan untuk model, tetapi untuk obyek tertentu ini.
has_perms
(perm_list, obj=None)¶Returns True
if the user has each of the specified permissions,
where each perm is in the format
"<app label>.<permission codename>"
. If the user is inactive,
this method will always return False
. For an active superuser, this
method will always return True
.
Jika obj
diloloskan, metode ini tidak akan memeriksa untuk perizinan-perizinan untuk model, tetapi untuk obyek tertentu.
has_module_perms
(package_name)¶Returns True
if the user has any permissions in the given package
(the Django app label). If the user is inactive, this method will
always return False
. For an active superuser, this method will
always return True
.
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=None, password=None, **extra_fields)¶Sama seperti create_user()
, but sets is_staff
dan is_superuser
menjadi True
.
with_perm
(perm, is_active=True, include_superusers=True, backend=None, obj=None)¶Returns users that have the given permission perm
either in the
"<app label>.<permission codename>"
format or as a
Permission
instance. Returns an
empty queryset if no users who have the perm
found.
If is_active
is True
(default), returns only active users, or
if False
, returns only inactive users. Use None
to return all
users irrespective of active state.
Jika include_superusers
adalah True
(awalan), hasil akan menyertakan pengguna super.
If backend
is passed in and it's defined in
AUTHENTICATION_BACKENDS
, then this method will use it.
Otherwise, it will use the backend
in
AUTHENTICATION_BACKENDS
, if there is only one, or raise an
exception.
AnonymousUser
¶models.
AnonymousUser
¶django.contrib.auth.models.AnonymousUser
adalah kelas yang menerapkan antarmuka django.contrib.auth.models.User
, dengan perbedaan ini:
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
.In practice, you probably won't need to use
AnonymousUser
objects on your own, but
they're used by web requests, as explained in the next section.
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. 150 karakter atau lebih 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 bidang pengesah mengizinkan hanya huruf ASCII dan angka, sebagai tambahan pada @
, .
, +
, -
, dan _
.
validators.
UnicodeUsernameValidator
¶Sebuah bidang pengesah mengizinkan krakter Unicode, sebagai tambahan pada @
, .
, +
, -
, dan _
. Pengesah awalan untuk User.username
.
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
request
HttpRequest
saat ini.user
user_logged_out
¶Dikirim ketika metode keluar dipanggil.
sender
None
jika pengguna tidak terautentifikasi.request
HttpRequest
saat ini.user
None
jika pengguna tidak terautentifikasi.user_login_failed
¶Terkirim ketika pengguna gagal berhasil masuk
sender
credentials
authenticate()
atau backend autentifikasi penyesuaian anda. Mandat mencocokkan sekumpulan dari pola 'sensitive', (termasuk sandi) tidak akan dikirim dalam kejelasan sebagai bagian dari sinyal.request
HttpRequest
, jika satu telah disediakan pada authenticate()
.Bagian ini merinci backend autentifikasi yang datang dengan Django. Untuk informasi pada bagaimana menggunakan mereka dan bagaimana menulis backend autentifikasi anda sendiri, lihat Other authentication sources section 1 of the User authentication guide 2.
Backend berikut tersedia di django.contrib.auth.backends
:
BaseBackend
¶A base class that provides default implementations for all required methods. By default, it will reject any user and provide no permissions.
get_user_permissions
(user_obj, obj=None)¶Mengembalikan set kosong.
get_group_permissions
(user_obj, obj=None)¶Mengembalikan set kosong.
get_all_permissions
(user_obj, obj=None)¶Uses get_user_permissions()
and get_group_permissions()
to
get the set of permission strings the user_obj
has.
has_perm
(user_obj, perm, obj=None)¶Uses get_all_permissions()
to check if user_obj
has the
permission string perm
.
ModelBackend
¶Ini adalah backend autentifikasi awalan digunakan oleh Django. Itu mengautentifikasi menggunakan mandat terdiri dari sebuah penciri pengguna dan sandi. Untuk model user Django, penciri pengguna adalah nama pengguna, untuk model user penyesuaian itu adalah bidang ditentukan oleh USERNAME_FIELD (lihat Customizing Users and authentication 1).
Itu juga menangangi model perizinan awalan seperti ditentukan untuk User
dan PermissionsMixin
.
has_perm()
, get_all_permissions()
, get_user_permissions()
, dan get_group_permissions()
mengizinkan sebuah obyek untuk dilewatkan sebagai sebuah parameter untuk perizinan khusus-obyek, tetapi backend ini tidak menerapkan mereka selain dari mengembalikan sebuah kumpulan kosong dari perizinan jika obj is not None
.
with_perm()
also allows an object to be passed as a parameter, but
unlike others methods it returns an empty queryset if obj is not None
.
authenticate
(request, username=None, password=None, **kwargs)¶Mencoba untuk mengautentifikasi username
dengan password
dengan memanggil User.check_password
. Jika tidak ada username
disediakan, itu mencoba mengambil sebuah nama pengguna dari kwargs
menggunakan kunci CustomUser.USERNAME_FIELD
. Mengembalikan sebuah pengguna terautentifikasi atau None
.
request
adalah sebuah HttpRequest
dan mungkin berupa None
jika itu tidak disediakan pada authenticate()
(yang melewatkan itu ke backend).
get_user_permissions
(user_obj, obj=None)¶Mengembalikan kumpulan dari string perizinan user_obj
miliki dari perizinan pengguna mereka sendiri. Mengembalikan sebuah kumpulan kosong jika is_anonymous
atau is_active
adalah False
.
get_group_permissions
(user_obj, obj=None)¶Mengembalikan sekumpulan perizinan string user_obj
miliki dari perizinan dari kelompok mereka miliki. Mengembalikan sebuah kumpulan kosong jika is_anonymous
atau is_active
adalah False
.
get_all_permissions
(user_obj, obj=None)¶Mengembalikan kumpulan dari string perizinan user_obj
miliki, termasuk kedua perizinan pengguna dan perizinan kelompok. Mengembalikan sebuah kumpulan kosong jika is_anonymous
atau is_active
adalah False
.
has_perm
(user_obj, perm, obj=None)¶Gunakan get_all_permissions()
untuk memeriksa jika user_obj
mempunyai string perizinan perm
. Mengembalikan False
jika pengguna tidak is_active
.
has_module_perms
(user_obj, app_label)¶Mengembalikan apakah user_obj
mempunyai perizinan apapun pada app_label
aplikasi.
user_can_authenticate
()¶Mengembalikan apakah pengguna diizinkan mengautentifikasi. Untuk mencocokkan perilaku dari AuthenticationForm
yang prohibits inactive users from logging in
, metode ini mengembalikan False
untuk pengguna dengan is_active=False
. Penyesuaian model user yang tidak mempunyai sebuah bidang is_active
diizinkan.
with_perm
(perm, is_active=True, include_superusers=True, obj=None)¶Returns all active users who have the permission perm
either in
the form of "<app label>.<permission codename>"
or a
Permission
instance. Returns an
empty queryset if no users who have the perm
found.
If is_active
is True
(default), returns only active users, or
if False
, returns only inactive users. Use None
to return all
users irrespective of active state.
Jika include_superusers
adalah True
(awalan), hasil akan menyertakan pengguna super.
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 LoginView()
dengan menimpa metode confirm_login_allowed()
ketika itu menolak pengguna tidak aktif.
RemoteUserBackend
¶Gunakan backend ini untuk mengambil keuntungan dari autentifikasi external-to-Django-handled. Itu mengautentifikasi menggunakan nama pengguna dilewatkan dalam request.META['REMOTE_USER']
. Lihat dokumentasi Authenticating against REMOTE_USER 1.
Jika anda butuh lebih kendali, anda dapat membuat backend autentifikasi sendiri yang mewarisi dari kelas ini dan menimpa atribut ini atau metode:
create_unknown_user
¶True
atau False
. Menentukan apakah atau tidak obyek pengguna dibuat jika belum di basisdata Awalan menjadi True
.
authenticate
(request, remote_user)¶The username passed as remote_user
is considered trusted. This
method 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.
request
adalah sebuah HttpRequest
dan mungkin berupa None
jika itu tidak disediakan pada authenticate()
(yang melewatkan itu ke backend).
clean_username
(username)¶Melakukan pembersihan apapun pada username
(misalnya melucuti informasi LDAP DN) sebelum menggunakan itu untuk mendapatkan atau membuat sebuah obyek pengguna. Mengembalikan nama pengguna dibersihkan.
configure_user
(request, user, created=True)¶Configures the user on each authentication attempt. This method is called immediately after fetching or creating the user being authenticated, 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.
The setup can be performed either once when the user is created
(created
is True
) or on existing users (created
is
False
) as a way of synchronizing attributes between the remote and
the local systems.
request
adalah sebuah HttpRequest
dan mungkin berupa None
jika itu tidak disediakan pada authenticate()
(yang melewatkan itu ke backend).
The created
argument was added.
user_can_authenticate
()¶Mengembalikan apakah 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)¶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. If the verification fails and SECRET_KEY_FALLBACKS
are
provided, it verifies the session against each fallback key using
get_session_auth_fallback_hash()
.
Mengembalikan sebuah instance dari AnonymousUser
jika backend autentifikasi disimpan dalam sesi tidak lagi dalam AUTHENTICATION_BACKENDS
, jika seorang pengguna tidak dikembalikan oleh metode get_user()
backend, atau jika campuran autentifikasi sesi tidak disahkan.
Fallback verification with SECRET_KEY_FALLBACKS
was added.
Des 04, 2023