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 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 hurud ASCII dan angka dalam nama pengguna. Meskipun itu bukanlah pilihan disengaja. Karakter unicode selalu diterima ketika menggunakan Python 3. Django 1.10 secara resmi menambah dukungan Unicode dalam nama pengguna, menjaga perilaku hanya-ASCII pada Python 2, dengan pilihan untuk menyesuaikan perilaku menggunakan User.username_validator.

first_name

Pilihan (blank=True). 30 karakter atau sedikit.

last_name

Pilihan (blank=True). 150 karakter atau sedikit.

Changed in Django 2.0:

max_length meningkat dari 30 menjadi 150 karakter.

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.

groups

Hubungan banyak-ke-banyak ke Group

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.

Atribut

class 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.

username_validator

Menunjuk pada sebuah instance pengesah digunakan untuk mensahkan nama pengguna. Awalan pada validators.UnicodeUsernameValidator.

Untuk merubah pengesah nama pengguna, anda dapat mensubkelaskan model User dan menyetel atribut ini pada instance pengesah berbeda.

from django.contrib.auth.models import User
from django.contrib.auth.validators import ASCIIUsernameValidator

class CustomUser(User):
    username_validator = ASCIIUsernameValidator()

    class Meta:
        proxy = True  # If no new field is added.

Cara

class 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.

Changed in Django 2.1:

Dalam versi terlama, ini juga mengembalikan False jika sandi adalah None atau string kosong, atau jika sandi menggunakan sebuah pencampur yang tidak dalam pengaturan PASSWORD_HASHERS. Perilaku ini dianggap sebagai sebuah kesalahan ketika itu mencegah sandi tersebut dari meminta mengatur kembali sandi.

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

Pengelola metode

class 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.

Obyek AnonymousUser

class models.AnonymousUser

django.contrib.auth.models.AnonymousUser adalah kelas yang menerapkan antarmuka django.contrib.auth.models.User, dengan perbedaan ini:

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:

class models.Permission
name

Dibutuhkan. 255 karakter atau sedikit. Contoh: 'Can vote'.

content_type

Dibutuhkan. Mengacu ke tabel basisdata django_content_type, yang mengandung sebuah rekaman untuk setiap model terpasang.

codename

Dibutuhkan. 100 karakter atau sedikit. Contoh: 'can_vote'.

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

Sebuah bidang pengesah mengizinkan hanya huruf ASCII dan angka, sebagai tambahan pada @, ., +, -, dan _.

class validators.UnicodeUsernameValidator

Sebuah bidang pengesah mengizinkan krakter Unicode, sebagai tambahan pada @, ., +, -, dan _. Pengesah awalan untuk User.username.

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:

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
Sebuah kamus dari argumen kata kunci mengandung mandat pengguna yang dilewatkan ke authenticate() atau backend autentifikasi penyesuaian anda. Mandat mencocokkan sekumpulan dari pola 'sensitive', (termasuk sandi) tidak akan dikirim dalam kejelasan sebagai bagian dari sinyal.
request
Obyek HttpRequest, jika satu telah disediakan pada authenticate().

Backend pembuktian keaslian

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.

Tersedia backend autentifikasi

Backend berikut tersedia di django.contrib.auth.backends:

class 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.

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.

class 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.

class 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)

Nama pengguna melewatkan sebuah remote_user dianggap dipercaya. Metode ini cukup mengembalikan obyek user dengan nama pengguna yang diberikan, membuat obyek user baru jika create_unknown_user adalah 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(user)

Konfigurasi pengguna dibuat terbaru. Metode ini dipanggil segera setelah seorang pengguna baru dibuat, dan dapat digunakan untuk melakukan tindakan penyetelah penyesuaian, seperti mengatur kelompok pengguna berdasarkan pada atribut-atribut dalam sebuah direktori LDAP. Mengembalikan obyek pengguna.

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.

class AllowAllUsersRemoteUserBackend

Sama seperti RemoteUserBackend kecuali bahwa itu menolak pengguna tidak aktif karena user_can_authenticate() selalu mengembalikan True.

Fungsi-fungsi kegunaan

get_user(request)[sumber]

Mengembalikan instance model user terhubung dengan sesi request diberikan

Itu memeriksa jika backend autentifikasi disimpan dalam sesi adalah hadir dalam AUTHENTICATION_BACKENDS. Jika demikian, itu menggunakan metode get_user() backend untuk mengambil instance model user dan kemudian membuktikan sesi dengan memanggil metode get_session_auth_hash() model user.

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.

Back to Top