---
title: "django.contrib.auth"
version: 1.11
locale: id
source: https://docs.djangoproject.com/id/1.11/ref/contrib/auth/
canonical: https://djangodocs.dev/id/1.11/ref/contrib/auth/
---
# `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](/id/1.11/topics/auth/).

## Model `User`

### Bidang

#### `class models.User`

Obyek [`User`](#id1) 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](/id/1.11/topics/auth/customizing/#specifying-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 originally accepted only ASCII letters and numbers in
> usernames. Although it wasn't a deliberate choice, Unicode
> characters have always been accepted when using Python 3. Django
> 1.10 officially added Unicode support in usernames, keeping the
> ASCII-only behavior on Python 2.

> **Changed in Django 1.10**
>
> `max_length` meningkat dari 30 menjadi 150 karakter.

#### `first_name`

Pilihan ([`blank=True`](/id/1.11/ref/models/fields/#django.db.models.Field.blank)). 30 karakter atau sedikit.

#### `last_name`

Pilihan ([`blank=True`](/id/1.11/ref/models/fields/#django.db.models.Field.blank)). 30 karakter atau sedikit.

#### `email`

Pilihan ([`blank=True`](/id/1.11/ref/models/fields/#django.db.models.Field.blank)). 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](/id/1.11/topics/auth/passwords/).

#### `groups`

Hubungan banyak-ke-banyak ke [`Group`](#id6)

#### `user_permissions`

Hubungan banyak-ke-banyak ke [`Permission`](#id3)

#### `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`](#django.contrib.auth.backends.ModelBackend)) dan [`RemoteUserBackend`](#django.contrib.auth.backends.RemoteUserBackend) melakukannya. Anda dapat menggunakan class:~django.contrib.auth.backends.AllowAllUsersModelBackend atau [`AllowAllUsersRemoteUserBackend`](#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend) jika anda ingin mengizinkan pengguna tidak aktif untuk masuk. Dalam kasus ini, anda akan juga ingin menyesuaikan [`AuthenticationForm`](/id/1.11/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm) digunakan oleh [`LoginView`](/id/1.11/topics/auth/default/#django.contrib.auth.views.LoginView) ketika itu menolak pengguna tidak aktif. Waspada bahwa metode pemeriksaan-perizinan seperti [`has_perm()`](#django.contrib.auth.models.User.has_perm) dan autentifikasi dalam admin Django semua mengembalikan `False` untuk pengguna tidak aktif.

> **Changed in Django 1.10**
>
> Dalam versi terlama, [`ModelBackend`](#django.contrib.auth.backends.ModelBackend) dan [`RemoteUserBackend`](#django.contrib.auth.backends.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.

### 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`](/id/1.11/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware) (mewakili pengguna masuk saat ini), anda harus mengetahui atribut ini adalah `True` untuk tiap instance [`User`](#id1).

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

> **Jangan gunakan penghubung is untuk perbandingan!**
>
> Untukmengizinkan atribut `is_authenticated` dan `is_anonymous` untuk juga bekerja seperti metode, atribut adalah obyek `CallableBool`. Dengan demikian, sampai masa pengusangan berakhir di Django 2.0, anda tidak dapat membandingkan sifat ini menggunakan penghubung `is`. Yaitu, `request.user.is_authenticated adalah True` selalu  bernilai `False`.

#### `is_anonymous`

Atribut hanya-baca yaitu selalu `False`. Ini adalah jalan untuk membedakan obyek [`User`](#id1) and [`AnonymousUser`](#django.contrib.auth.models.AnonymousUser). Umumnya, anda harus memilih menggunakan [`is_authenticated`](#django.contrib.auth.models.User.is_authenticated) pada 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 `User` dapat bertukar, anda haus menggunakan metode ini daripada mengacu atribut nama pengguna secara langsung.

#### `get_full_name()`

Mengembalikan [`first_name`](#django.contrib.auth.models.User.first_name) ditambah [`last_name`](#django.contrib.auth.models.User.last_name), dengan spasi diantaranya.

#### `get_short_name()`

Mengembalikan [`first_name`](#django.contrib.auth.models.User.first_name).

#### `set_password(raw_password)`

Setel sandi pengguna ke string mentah yang diberikan, merawat campuran sandi. Tidak menyimpan obyek [`User`](#id1).

Ketika `raw_password` adalah `None`, sandi akan disetel menjadi sebuah sandi tidak berguna, seperti jika [`set_unusable_password()`](#django.contrib.auth.models.User.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()`](#django.contrib.auth.models.User.check_password) untuk pengguna ini tidak akan pernah mengembalikan `True`. Tidak menyimpan obyek [`User`](#id1).

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()`](#django.contrib.auth.models.User.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](/id/1.11/topics/auth/default/#topic-authorization)). 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`](/id/1.11/ref/settings/#std-setting-DEFAULT_FROM_EMAIL). `**kwargs` apapun dilewatkan ke panggilan [`send_mail()`](/id/1.11/topics/email/#django.core.mail.send_mail) pokok

### Pengelola metode

#### `class models.UserManager`

Model [`User`](#id1) mempunyai pengelola penyesuaian yang mempunyai metode pembantu berikut (sebagai tambahan pada metode disediakan oleh [`BaseUserManager`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager)):

#### `create_user(username, email=None, password=None, **extra_fields)`

Buat, simpan dan mengembalikan [`User`](#id1).

[`username`](#django.contrib.auth.models.User.username) dan [`password`](#django.contrib.auth.models.User.password) disetel sesuai yang diberikan. Bagian ranah dari [`email`](#django.contrib.auth.models.User.email) adalah otomatis mengubah ke huruf kecil, dan mengembalikan obyek [`User`](#id1) akan menyetel [`is_active`](#django.contrib.auth.models.User.is_active) ke `True`.

Jika tidak ada sandi disediakan, [`set_unusable_password()`](#django.contrib.auth.models.User.set_unusable_password) akan dipanggil.

Argumen kata kunci `extra_fields` dilewatkan melalui metode [`User`](#id1)’s `__init__` untuk mengizinkan mengatur bidang yang berubah-ubah pada [custom user model](/id/1.11/topics/auth/customizing/#auth-custom-user).

Lihat [Membuat pengguna](/id/1.11/topics/auth/default/#topics-auth-creating-users) sebagai contoh penggunaan.

#### `create_superuser(username, email, password, **extra_fields)`

Sama seperti [`create_user()`](#django.contrib.auth.models.UserManager.create_user), but sets [`is_staff`](#django.contrib.auth.models.User.is_staff) dan [`is_superuser`](#django.contrib.auth.models.User.is_superuser) menjadi `True`.

## Obyek `AnonymousUser`

#### `class models.AnonymousUser`

[`django.contrib.auth.models.AnonymousUser`](#django.contrib.auth.models.AnonymousUser) adalah kelas yang menerapkan antarmuka [`django.contrib.auth.models.User`](#id1), dengan perbedaan ini:

- [id](/id/1.11/topics/db/models/#automatic-primary-key-fields) selalu `None`.
- [`username`](#django.contrib.auth.models.User.username) adalah selalu string kosong.
- [`get_username()`](#django.contrib.auth.models.User.get_username) selalu mengembalikan deretan kalimat kosong.
- [`is_anonymous`](#django.contrib.auth.models.User.is_anonymous) adalah `True` daripada `False`.
- [`is_authenticated`](#django.contrib.auth.models.User.is_authenticated) adalah `False` daripada `True`.
- [`is_staff`](#django.contrib.auth.models.User.is_staff) dan [`is_superuser`](#django.contrib.auth.models.User.is_superuser) adalah selalu `False`.
- [`is_active`](#django.contrib.auth.models.User.is_active) adalah selalu `False`.
- [`groups`](#django.contrib.auth.models.User.groups) dan [`user_permissions`](#django.contrib.auth.models.User.user_permissions) adalah selalu kosong.
- [`set_password()`](#django.contrib.auth.models.User.set_password), [`check_password()`](#django.contrib.auth.models.User.check_password), [`save()`](/id/1.11/ref/models/instances/#django.db.models.Model.save) dan [`delete()`](/id/1.11/ref/models/instances/#django.db.models.Model.delete) memunculkan [`NotImplementedError`](https://docs.python.org/3/library/exceptions.html#NotImplementedError).

Dalam penerapannya, anda mungkin tidak butuh menggunakan obyek [`AnonymousUser`](#django.contrib.auth.models.AnonymousUser) anda sendiri, tetapi mereka digunakan oleh permintaan Jaringan, seperti yang dijelaskan di bagian selanjutnya.

## Model `Permission`

#### `class models.Permission`

### Bidang

Obyek [`Permission`](#id3) 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`](#id3) mempunyai standar cara akses-data seperti lainnya [Django model](/id/1.11/ref/models/instances/).

## Model `Group`

#### `class models.Group`

### Bidang

Obyek [`Group`](#id6) 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`](#id3):

```
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**

Pengesah bidang mengizinkan hanya huruf ASCII dan angka, sebagai tambahan pada `@`, `.`, `+`, `-`, and `_`. Pengesah awalan untuk `User.username` pada Python 2.

#### `class validators.UnicodeUsernameValidator`

> **New in Django 1.10**

Pengesah bidang mengizinkan karakter Unicode, sebagai tambahan pada `@`, `.`, `+`, `-`, and `_`. Pengesah awalan untuk `User.username` pada Python 3.

## Sinyal masuk dan keluar

Kerangka kerja autentifikasi menggunakan [signals](/id/1.11/topics/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`](/id/1.11/ref/request-response/#django.http.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`](/id/1.11/ref/request-response/#django.http.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()`](/id/1.11/topics/auth/default/#django.contrib.auth.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`](/id/1.11/ref/request-response/#django.http.HttpRequest), jika satu telah disediakan pada [`authenticate()`](/id/1.11/topics/auth/default/#django.contrib.auth.authenticate).

> **Changed in Django 1.11**
>
> Argumen `request` te;ah ditambahkan.

## 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`](#module-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`](#id1) dan [`PermissionsMixin`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin).

[`has_perm()`](#django.contrib.auth.backends.ModelBackend.has_perm), [`get_all_permissions()`](#django.contrib.auth.backends.ModelBackend.get_all_permissions), [`get_user_permissions()`](#django.contrib.auth.backends.ModelBackend.get_user_permissions), dan [`get_group_permissions()`](#django.contrib.auth.backends.ModelBackend.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`](#django.contrib.auth.models.User.check_password). Jika tidak ada `username` disediakan, itu mencoba mengambil sebuah nama pengguna dari `kwargs` menggunakan kunci [`CustomUser.USERNAME_FIELD`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD). Mengembalikan sebuah pengguna terautentifikasi atau `None`.

`request` adalah sebuah [`HttpRequest`](/id/1.11/ref/request-response/#django.http.HttpRequest) dan mungkin berupa `None` jika itu tidak disediakan pada [`authenticate()`](/id/1.11/topics/auth/default/#django.contrib.auth.authenticate) (yang melewatkan itu ke backend).

> **Changed in Django 1.11**
>
> Argumen `request` te;ah ditambahkan.

#### `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`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous) atau [`is_active`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.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`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous) atau [`is_active`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.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`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous) atau [`is_active`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) adalah `False`.

#### `has_perm(user_obj, perm, obj=None)`

Gunakan [`get_all_permissions()`](#django.contrib.auth.backends.ModelBackend.get_all_permissions) untuk memeriksa jika `user_obj` mempunyai string perizinan `perm`. Mengembalikan `False` jika pengguna tidak [`is_active`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active).

#### `has_module_perms(user_obj, app_label)`

Mengembalikan apakah `user_obj` mempunyai perizinan apapun pada `app_label` aplikasi.

#### `user_can_authenticate()`

> **New in Django 1.10**

Mengembalikan apakah pengguna diizinkan mengautentifikasi. Untuk mencocokkan perilaku dari [`AuthenticationForm`](/id/1.11/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm) yang [`prohibits inactive users from logging in`](/id/1.11/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed), metode ini mengembalikan `False` untuk pengguna dengan [`is_active=False`](#django.contrib.auth.models.User.is_active). Penyesuaian model user yang tidak mempunyai sebuah bidang [`is_active`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) diizinkan.

#### `class AllowAllUsersModelBackend`

> **New in Django 1.10**

Sama seperti [`ModelBackend`](#django.contrib.auth.backends.ModelBackend) kecuali bahwa itu menolak pengguna tidak aktif karena [`user_can_authenticate()`](#django.contrib.auth.backends.ModelBackend.user_can_authenticate) selalu mengembalikan `True`.

Ketika menggunakan backend, anda akan ingin menyesuaikan [`AuthenticationForm`](/id/1.11/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm) digunakan oleh tampilan [`LoginView()`](/id/1.11/topics/auth/default/#django.contrib.auth.views.LoginView) dengan menimpa metode [`confirm_login_allowed()`](/id/1.11/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.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']`](/id/1.11/ref/request-response/#django.http.HttpRequest.META). 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:

#### `RemoteUserBackend.create_unknown_user`

`True` atau `False`. Menentukan apakah atau tidak obyek pengguna dibuat jika belum di basisdata Awalan menjadi `True`.

#### `RemoteUserBackend.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`](#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user) adalah `True`.

Mengembalikan `None` jika [`create_unknown_user`](#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user) adalah `False` dan obyek `User` dengan nama pengguna yang diberikan tidak ditemukan dalam basisdata.

`request` adalah sebuah [`HttpRequest`](/id/1.11/ref/request-response/#django.http.HttpRequest) dan mungkin berupa `None` jika itu tidak disediakan pada [`authenticate()`](/id/1.11/topics/auth/default/#django.contrib.auth.authenticate) (yang melewatkan itu ke backend).

#### `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)`

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.

#### `RemoteUserBackend.user_can_authenticate()`

> **New in Django 1.10**

Mengembalikan apakah pengguna diizinkan untuk autentifikasi. Metode ini mengembalikan `False` untuk pengguna dengan [`is_active=False`](#django.contrib.auth.models.User.is_active). Penyesuaian model user yang tidak mempunyai sebuah bidang [`is_active`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) adalah diizinkan.

#### `class AllowAllUsersRemoteUserBackend`

> **New in Django 1.10**

Sama seperti [`RemoteUserBackend`](#django.contrib.auth.backends.RemoteUserBackend) kecuali bahwa itu menolak pengguna tidak aktif karena `user_can_authenticate()` selalu mengembalikan `True`.

## Fungsi-fungsi kegunaan

#### `get_user(request)`

Mengembalikan instance model user terhubung dengan sesi `request` diberikan

Itu memeriksa jika backend autentifikasi disimpan dalam sesi adalah hadir dalam [`AUTHENTICATION_BACKENDS`](/id/1.11/ref/settings/#std-setting-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()`](/id/1.11/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash) model user.

Mengembalikan sebuah instance dari [`AnonymousUser`](#django.contrib.auth.models.AnonymousUser) jika backend autentifikasi disimpan dalam sesi tidak lagi dalam [`AUTHENTICATION_BACKENDS`](/id/1.11/ref/settings/#std-setting-AUTHENTICATION_BACKENDS), jika seorang pengguna tidak dikembalikan oleh metode `get_user()` backend, atau jika campuran autentifikasi sesi tidak disahkan.
