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

## Model `User`

#### `class models.User`

### Bidang

#### `class models.User`

Obyek [`User`](#django.contrib.auth.models.User) mempunyai bidang berikut:

#### `username`

Diwajibkan. 150 karakter atau lebih sedikit. Nama pengguna dapat mengandung alfanumerik, `_`, `@`, `+`, `.` dan `-` karakter.

The `max_length` should be sufficient for many use cases. If you need
a longer length, please use a [custom user model](/id/6.1/topics/auth/customizing/#specifying-custom-user-model).

#### `first_name`

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

#### `last_name`

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

#### `email`

Pilihan ([`blank=True`](/id/6.1/ref/models/fields/#django.db.models.Field.blank)). Alamat surel.

#### `password`

Required. A hash of, and metadata about, the password. (Django doesn't
store the raw password.) Raw passwords can be arbitrarily long and can
contain any character. The metadata in this field may mark the password
as unusable. See the [password documentation](/id/6.1/topics/auth/passwords/).

#### `groups`

Hubungan banyak-ke-banyak ke [`Group`](#django.contrib.auth.models.Group)

#### `user_permissions`

Hubungan banyak-ke-banyak ke [`Permission`](#django.contrib.auth.models.Permission)

#### `is_staff`

Boolean. Allows this user to access the admin site.

#### `is_active`

Boolean. Marks this user account as active. We recommend that you set
this flag to `False` instead of deleting accounts. That way, if your
applications have any foreign keys to users, the foreign keys won't
break.

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/6.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm) digunakan oleh [`LoginView`](/id/6.1/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.

#### `is_superuser`

Boolean. Treats this user as having all permissions without assigning
any permission to it in particular.

#### `last_login`

Tanggalwaktu dari masuk terakhir pengguna.

#### `date_joined`

The date/time when the account was created.

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

#### `is_anonymous`

Atribut hanya-baca yaitu selalu `False`. Ini adalah jalan untuk membedakan obyek [`User`](#django.contrib.auth.models.User) and [`AnonymousUser`](#django.contrib.auth.models.AnonymousUser). Umumnya, anda harus memilih menggunakan [`is_authenticated`](#django.contrib.auth.models.User.is_authenticated) pada atribut ini.

### 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`](#django.contrib.auth.models.User).

When the `raw_password` is `None`, the password will be set to an
unusable password, as if
[`set_unusable_password()`](#django.contrib.auth.models.User.set_unusable_password)
were used.

#### `check_password(raw_password)`

#### `acheck_password(raw_password)`

*Versi asinkron*: `acheck_password()`

Mengembalikan `True` jika deretan karakter mentah yang diberikan adalah sandi benar untuk pengguna. (Ini merawat hash sandi dalam membuat perbandingan.)

#### `set_unusable_password()`

Marks the user as having no password set by updating the metadata in
the [`password`](#django.contrib.auth.models.User.password) field. This isn't
the same as having a blank string for a password.
[`check_password()`](#django.contrib.auth.models.User.check_password) for this user
will never return `True`. Doesn't save the
[`User`](#django.contrib.auth.models.User) object.

Anda mungkin butuh ini jika otentifikasi untuk aplikasi anda memakan tempat terhadap sumber luar yang ada seperti pelipat LDAP.

> **Password reset restriction**
>
> Users having an unusable password will not able to request a
> password reset email via
> [`PasswordResetView`](/id/6.1/topics/auth/default/#django.contrib.auth.views.PasswordResetView).

#### `has_usable_password()`

Returns `False` if
[`set_unusable_password()`](#django.contrib.auth.models.User.set_unusable_password) has
been called for this user.

#### `get_user_permissions(obj=None)`

#### `aget_user_permissions(obj=None)`

*Asynchronous version*: `aget_user_permissions()`

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

#### `aget_group_permissions(obj=None)`

*Asynchronous version*: `aget_group_permissions()`

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

#### `aget_all_permissions(obj=None)`

*Asynchronous version*: `aget_all_permissions()`

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

#### `ahas_perm(perm, obj=None)`

*Asynchronous version*: `ahas_perm()`

Returns `True` if the user has the specified permission, where perm
is in the format `"<app label>.<permission codename>"`. (see
documentation on [permissions](/id/6.1/topics/auth/default/#topic-authorization)). 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)`

#### `ahas_perms(perm_list, obj=None)`

*Asynchronous version*: `ahas_perms()`

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

#### `ahas_module_perms(package_name)`

*Asynchronous version*: `ahas_module_perms()`

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

Sends an email to the user. If `from_email` is `None`, Django uses
the [`DEFAULT_FROM_EMAIL`](/id/6.1/ref/settings/#std-setting-DEFAULT_FROM_EMAIL). Any `**kwargs` are passed to the
underlying [`send_mail()`](/id/6.1/topics/email/#django.core.mail.send_mail) call.

### Pengelola metode

#### `class models.UserManager`

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

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

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

*Asynchronous version*: `acreate_user()`

Buat, simpan dan mengembalikan [`User`](#django.contrib.auth.models.User).

[`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`](#django.contrib.auth.models.User) akan menyetel [`is_active`](#django.contrib.auth.models.User.is_active) ke `True`.

If no password is provided,
[`set_unusable_password()`](#django.contrib.auth.models.User.set_unusable_password) will
be called.

If no email is provided, [`email`](#django.contrib.auth.models.User.email)
will be set to an empty string.

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

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

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

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

*Asynchronous version*: `acreate_superuser()`

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

#### `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`](#django.contrib.auth.models.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`](/id/6.1/ref/settings/#std-setting-AUTHENTICATION_BACKENDS), then this method will use it.
Otherwise, it will use the `backend` in
[`AUTHENTICATION_BACKENDS`](/id/6.1/ref/settings/#std-setting-AUTHENTICATION_BACKENDS), if there is only one, or raise an
exception.

## 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`](#django.contrib.auth.models.User), dengan perbedaan ini:

- [id](/id/6.1/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) always returns
  the empty string.
- [`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/6.1/ref/models/instances/#django.db.models.Model.save) and
  [`delete()`](/id/6.1/ref/models/instances/#django.db.models.Model.delete) raise [`NotImplementedError`](https://docs.python.org/3/library/exceptions.html#NotImplementedError).

In practice, you probably won't need to use
[`AnonymousUser`](#django.contrib.auth.models.AnonymousUser) objects on your own, but
they're used by web requests, as explained in the next section.

## Model `Permission`

#### `class models.Permission`

### Bidang

Obyek [`Permission`](#django.contrib.auth.models.Permission) mempunyai bidang berikut:

#### `class models.Permission`

#### `name`

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

#### `content_type`

Required. A foreign key to the
[`ContentType`](/id/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentType) model.

#### `codename`

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

### Cara

Obyek [`Permission`](#django.contrib.auth.models.Permission) mempunyai standar cara akses-data seperti lainnya [Django model](/id/6.1/ref/models/instances/).

#### `class models.Permission`

#### `user_perm_str`

> **New in Django 6.1**

Returns the string representation for use in [`has_perm`](#django.contrib.auth.models.User.has_perm).

## Model `Group`

#### `class models.Group`

### Bidang

Obyek [`Group`](#django.contrib.auth.models.Group) mempunyai bidang berikut:

#### `class models.Group`

#### `name`

Dibutuhkan. 150 karakter atau lebih sedikit. Karakter apapun diizinkan. Contoh: `'Awesome Users'`.

#### `permissions`

Bidang banyak-ke-banyak ke [`Permission`](#django.contrib.auth.models.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](/id/6.1/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/6.1/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/6.1/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`**

  A dictionary of keyword arguments containing the user credentials that
  were passed to [`authenticate()`](/id/6.1/topics/auth/default/#django.contrib.auth.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.

**`request`**

  Obyek [`HttpRequest`](/id/6.1/ref/request-response/#django.http.HttpRequest), jika satu telah disediakan pada [`authenticate()`](/id/6.1/topics/auth/default/#django.contrib.auth.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`](#module-django.contrib.auth.backends):

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

#### `aget_user_permissions(user_obj, obj=None)`

*Asynchronous version*: `aget_user_permissions()`

Mengembalikan set kosong.

#### `get_group_permissions(user_obj, obj=None)`

#### `aget_group_permissions(user_obj, obj=None)`

*Asynchronous version*: `aget_group_permissions()`

Mengembalikan set kosong.

#### `get_all_permissions(user_obj, obj=None)`

#### `aget_all_permissions(user_obj, obj=None)`

*Asynchronous version*: `aget_all_permissions()`

Uses [`get_user_permissions()`](#django.contrib.auth.backends.BaseBackend.get_user_permissions) and [`get_group_permissions()`](#django.contrib.auth.backends.BaseBackend.get_group_permissions) to
get the set of permission strings the `user_obj` has.

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

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

*Asynchronous version*: `ahas_perm()`

Uses [`get_all_permissions()`](#django.contrib.auth.backends.BaseBackend.get_all_permissions) to check if `user_obj` has the
permission string `perm`.

#### `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](/id/6.1/topics/auth/customizing/)).

Itu juga menangangi model perizinan awalan seperti ditentukan untuk [`User`](#django.contrib.auth.models.User) dan [`PermissionsMixin`](/id/6.1/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`.

[`with_perm()`](#django.contrib.auth.backends.ModelBackend.with_perm) also allows an object to be passed as a parameter, but
unlike other methods it returns an empty queryset if `obj is not None`.

#### `authenticate(request, username=None, password=None, **kwargs)`

#### `aauthenticate(request, username=None, password=None, **kwargs)`

*Versi asinkron*: `aauthenticate()`

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/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD). Mengembalikan sebuah pengguna terautentifikasi atau `None`.

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

#### `get_user_permissions(user_obj, obj=None)`

#### `aget_user_permissions(user_obj, obj=None)`

*Asynchronous version*: `aget_user_permissions()`

Mengembalikan kumpulan dari string perizinan `user_obj` miliki dari perizinan pengguna mereka sendiri. Mengembalikan sebuah kumpulan kosong jika [`is_anonymous`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous) atau [`is_active`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) adalah `False`.

#### `get_group_permissions(user_obj, obj=None)`

#### `aget_group_permissions(user_obj, obj=None)`

*Asynchronous version*: `aget_group_permissions()`

Mengembalikan sekumpulan perizinan string `user_obj` miliki dari perizinan dari kelompok mereka miliki. Mengembalikan sebuah kumpulan kosong jika [`is_anonymous`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous) atau [`is_active`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) adalah `False`.

#### `get_all_permissions(user_obj, obj=None)`

#### `aget_all_permissions(user_obj, obj=None)`

*Asynchronous version*: `aget_all_permissions()`

Mengembalikan kumpulan dari string perizinan `user_obj` miliki, termasuk kedua perizinan pengguna dan perizinan kelompok. Mengembalikan sebuah kumpulan kosong jika [`is_anonymous`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous) atau [`is_active`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) adalah `False`.

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

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

*Asynchronous version*: `ahas_perm()`

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/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active).

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

#### `ahas_module_perms(user_obj, app_label)`

*Asynchronous version*: `ahas_module_perms()`

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.confirm_login_allowed()`](/id/6.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed), this
method returns `False` for users with [`is_active=False`](#django.contrib.auth.models.User.is_active). Custom user models that
don't have an [`is_active`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active)
field are allowed.

#### `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`](#django.contrib.auth.models.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.

#### `class AllowAllUsersModelBackend`

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/6.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm) digunakan oleh tampilan [`LoginView()`](/id/6.1/topics/auth/default/#django.contrib.auth.views.LoginView) dengan menimpa metode [`confirm_login_allowed()`](/id/6.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_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']`](/id/6.1/ref/request-response/#django.http.HttpRequest.META). See
the [Authenticating against REMOTE\_USER](/id/6.1/howto/auth-remote-user/)
documentation.

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

#### `aauthenticate(request, remote_user)`

*Versi asinkron*: `aauthenticate()`

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`](#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user) is
`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/6.1/ref/request-response/#django.http.HttpRequest) dan mungkin berupa `None` jika itu tidak disediakan pada [`authenticate()`](/id/6.1/topics/auth/default/#django.contrib.auth.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)`

#### `aconfigure_user(request, user, created=True)`

*Asynchronous version*: `aconfigure_user()`

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. When fetching or creating an user is called
from a synchronous context, `configure_user` is called,
`aconfigure_user` is called from async contexts.

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`](/id/6.1/ref/request-response/#django.http.HttpRequest) dan mungkin berupa `None` jika itu tidak disediakan pada [`authenticate()`](/id/6.1/topics/auth/default/#django.contrib.auth.authenticate) (yang melewatkan itu ke backend).

#### `user_can_authenticate()`

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/6.1/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active) adalah diizinkan.

#### `class AllowAllUsersRemoteUserBackend`

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

#### `aget_user(request)`

*Asynchronous version*: `aget_user()`

Mengembalikan instance model user terhubung dengan sesi `request` diberikan

It checks if the authentication backend stored in the session is present in
[`AUTHENTICATION_BACKENDS`](/id/6.1/ref/settings/#std-setting-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()`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash)
method. If the verification fails and [`SECRET_KEY_FALLBACKS`](/id/6.1/ref/settings/#std-setting-SECRET_KEY_FALLBACKS) are
provided, it verifies the session against each fallback key using
[`get_session_auth_fallback_hash()`](/id/6.1/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_fallback_hash).

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