django.contrib.auth¶Detta dokument tillhandahåller API-referensmaterial för komponenterna i Djangos autentiseringssystem. För mer information om användningen av dessa komponenter eller hur du anpassar autentisering och auktorisering, se autentisering ämnesguide.
User modell¶User-objekt har följande fält:
Krävs. 150 tecken eller färre. Användarnamn kan innehålla alfanumeriska tecken, _, @, +, . och -.
Den maximala längden bör vara tillräcklig för många användningsfall. Om du behöver en längre längd, använd en :ref:custom user model <specifying-custom-user-model>.
Valfritt (blank=True). 150 tecken eller färre.
Valfritt (blank=True). 150 tecken eller färre.
Valfritt (blank=True). E-post adress.
Obligatoriskt. En hash av, och metadata om, lösenordet. (Django lagrar inte det råa lösenordet.) Råa lösenord kan vara godtyckligt långa och kan innehålla alla tecken. Metadata i detta fält kan markera lösenordet som oanvändbart. Se dokumentation om lösenord.
Många-till-många-relation till Permission
Boolesk. Tillåter att den här användaren får åtkomst till administratörsplatsen.
Boolesk. Markerar detta användarkonto som aktivt. Vi rekommenderar att du sätter den här flaggan till False istället för att radera konton. På så sätt går inte de utländska nycklarna sönder om dina applikationer har några utländska nycklar till användare.
Detta kontrollerar inte nödvändigtvis om användaren kan logga in eller inte. Autentiseringsbackends är inte skyldiga att kontrollera flaggan is_active men standardbackend (ModelBackend) och RemoteUserBackend gör det. Du kan använda AllowAllUsersModelBackend eller AllowAllUsersRemoteUserBackend om du vill tillåta inaktiva användare att logga in. I det här fallet vill du också anpassa AuthenticationForm som används av LoginView eftersom den avvisar inaktiva användare. Tänk på att metoderna för behörighetskontroll som has_perm() och autentiseringen i Django admin alla returnerar False för inaktiva användare.
Booleansk. Behandlar den här användaren som om den har alla behörigheter utan att tilldela någon särskild behörighet till den.
En datatid för användarens senaste inloggning.
Datum/tid då kontot skapades.
Skrivskyddat attribut som alltid är True (i motsats till AnonymousUser.is_authenticated som alltid är False). Det här är ett sätt att se om användaren har autentiserats. Det innebär inte några behörigheter och kontrollerar inte om användaren är aktiv eller har en giltig session. Även om du normalt kommer att kontrollera detta attribut på request.user för att ta reda på om det har fyllts i av AuthenticationMiddleware (som representerar den för närvarande inloggade användaren), bör du veta att detta attribut är True för alla User-instanser.
Skrivskyddat attribut som alltid är False. Detta är ett sätt att skilja mellan objekten User och AnonymousUser. Generellt sett bör du föredra att använda is_authenticated framför detta attribut.
Returnerar användarnamnet för användaren. Eftersom User-modellen kan bytas ut bör du använda den här metoden istället för att referera till användarnamnsattributet direkt.
Returnerar first_name plus last_name, med ett mellanslag emellan.
Returnerar first_name.
Ställer in användarens lösenord till den angivna råsträngen och tar hand om lösenordets hashing. Sparar inte User-objektet.
När raw_password är None, kommer lösenordet att sättas till ett oanvändbart lösenord, som om set_unusable_password() användes.
Asynkron version: acheck_password()
Returnerar True om den angivna råsträngen är rätt lösenord för användaren. (Detta tar hand om lösenordets hashing vid jämförelsen.)
Markerar användaren som att inget lösenord har angetts genom att uppdatera metadata i fältet password. Detta är inte samma sak som att ha en tom sträng som lösenord. check_password() för den här användaren kommer aldrig att returnera True. Sparar inte objektet User.
Du kan behöva detta om autentiseringen för din applikation sker mot en befintlig extern källa, t.ex. en LDAP-katalog.
Begränsning av återställning av lösenord
Användare som har ett oanvändbart lösenord kommer inte att kunna begära ett e-postmeddelande om återställning av lösenord via PasswordResetView.
Returnerar False om set_unusable_password() har anropats för den här användaren.
Asynkron version: aget_user_permissions()
Returnerar en uppsättning behörighetssträngar som användaren har direkt.
Om obj anges returneras endast användarrättigheterna för detta specifika objekt.
metoden aget_user_permissions() har lagts till.
Asynkron version: aget_group_permissions()
Returnerar en uppsättning behörighetssträngar som användaren har via sina grupper.
Om obj anges returneras endast gruppbehörigheterna för detta specifika objekt.
metoden aget_group_permissions() har lagts till.
Asynkron version: aget_all_permissions()
Returnerar en uppsättning behörighetssträngar som användaren har, både genom grupp- och användarbehörigheter.
Om obj anges returneras endast behörigheterna för detta specifika objekt.
metoden aget_all_permissions() har lagts till.
Asynkron version: ahas_perm()
Returnerar True om användaren har den angivna behörigheten, där perm är i formatet "<app label>.<permission codename>". (se dokumentation om :ref:permissions <topic-authorization>`). Om användaren är inaktiv kommer denna metod alltid att returnera ``False. För en aktiv superanvändare kommer denna metod alltid att returnera True.
Om obj skickas in kommer denna metod inte att söka efter en behörighet för modellen, utan för detta specifika objekt.
metoden ahas_perm() har lagts till.
Asynkron version: ahas_perms()
Returnerar True om användaren har var och en av de angivna behörigheterna, där varje behörighet är i formatet "<app label>.<permission codename>". Om användaren är inaktiv returnerar denna metod alltid False. För en aktiv superanvändare kommer denna metod alltid att returnera True.
Om obj anges kommer den här metoden inte att kontrollera behörigheter för modellen, utan för det specifika objektet.
metoden ahas_perms() har lagts till.
Asynkron version: ahas_module_perms()
Returnerar True om användaren har några behörigheter i det angivna paketet (Django-appens etikett). Om användaren är inaktiv kommer denna metod alltid att returnera False. För en aktiv superanvändare kommer denna metod alltid att returnera True.
metoden ahas_module_perms() har lagts till.
Skickar ett e-postmeddelande till användaren. Om from_email är None använder Django :inställningen:`DEFAULT_FROM_EMAIL`. Eventuella **kwargs skickas till det underliggande send_mail()-anropet.
Modellen User har en anpassad manager som har följande hjälpmetoder (utöver de metoder som tillhandahålls av BaseUserManager):
Asynkron version: acreate_user()
Skapar, sparar och returnerar en User.
username och password är inställda som angivet. Domändelen av email konverteras automatiskt till gemener, och det returnerade User-objektet kommer att ha is_active satt till True.
Om inget lösenord anges kommer set_unusable_password() att anropas.
Om ingen e-postadress anges kommer email att sättas till en tom sträng.
Nyckelordsargumenten extra_fields skickas till User’s __init__ metod för att tillåta inställning av godtyckliga fält på en :ref:custom user model <auth-custom-user>.
Se :ref:``Skapa användare <topics-auth-creating-users>` för exempel på användning.
metoden acreate_user() har lagts till.
Asynkron version: acreate_superuser()
Samma som create_user(), men sätter is_staff och is_superuser till True.
metoden acreate_superuser() har lagts till.
Returnerar användare som har den givna behörigheten perm antingen i formatet "<app label>.<permission codename>" eller som en Permission-instans. Returnerar en tom frågeuppsättning om inga användare som har perm hittas.
Om is_active är True (standard) returneras endast aktiva användare, eller om False returneras endast inaktiva användare. Använd None för att returnera alla användare oavsett aktivt tillstånd.
Om include_superusers är True (standard) kommer resultatet att inkludera superanvändare.
Om backend skickas in och det är definierat i AUTHENTICATION_BACKENDS, så kommer denna metod att använda det. Annars kommer den att använda backend i AUTHENTICATION_BACKENDS, om det bara finns en, eller skapa ett undantag.
AnonymUser¶django.contrib.auth.models.AnonymousUser är en klass som implementerar gränssnittet django.contrib.auth.models.User, med dessa skillnader:
id är alltid None.
username är alltid en tom sträng.
get_username() returnerar alltid den tomma strängen.
is_anonymous är True istället för False.
is_authenticated är False istället för True.
is_staff och is_superuser är alltid False.
is_active är alltid False.
groups och user_permissions är alltid tomma.
set_password(), check_password(), save() och delete() ger upphov till NotImplementedError.
I praktiken kommer du förmodligen inte att behöva använda AnonymousUser-objekt på egen hand, men de används av webbförfrågningar, vilket förklaras i nästa avsnitt.
Bemyndigande modell¶Permission-objekt har följande fält:
Obligatoriskt. 255 tecken eller färre. Exempel: 'Kan rösta'.
Krävs. En främmande nyckel till modellen ContentType.
Krävs. 100 tecken eller färre. Exempel: 'can_vote'.
Permission-objekt har standardmetoder för dataåtkomst som alla andra Django-modeller.
Grupp modell¶Group-objekt har följande fält:
Krävs. 150 tecken eller färre. Alla tecken är tillåtna. Exempel: 'Fantastiska användare'.
Många-till-många-fält till Permission:
group.permissions.set([permission_list])
group.permissions.add(permission, permission, ...)
group.permissions.remove(permission, permission, ...)
group.permissions.clear()
En fältvalidator som endast tillåter ASCII-bokstäver och siffror, förutom @, ., +, - och _.
En fältvalidator som tillåter Unicode-tecken, utöver @, ., +, - och _. Standardvalideraren för User.username.
Auth-ramverket använder följande signals som kan användas för att meddela när en användare loggar in eller ut.
Skickas när en användare loggar in framgångsrikt.
Argument som skickas med denna signal:
Klassen för den användare som just loggade in.
begäranDen aktuella HttpRequest-instansen.
användareDen användarinstans som just loggade in.
Skickas när utloggningsmetoden anropas.
Som ovan: klassen för den användare som just loggade ut eller None om användaren inte var autentiserad.
begäranDen aktuella HttpRequest-instansen.
användareDen användarinstans som just loggade ut eller None om användaren inte var autentiserad.
Skickas när användaren misslyckats med att logga in
Namnet på den modul som används för autentisering.
referenserEn ordbok med nyckelordsargument som innehåller de användaruppgifter som skickades till authenticate() eller din egen anpassade autentiseringsbackend. Autentiseringsuppgifter som matchar en uppsättning ”känsliga” mönster (inklusive lösenord) kommer inte att skickas i klartext som en del av signalen.
begäranObjektet HttpRequest, om ett sådant tillhandahölls till authenticate().
Detta avsnitt beskriver de autentiseringsbackends som levereras med Django. För information om hur du använder dem och hur du skriver dina egna autentiseringsbackends, se Andra autentiseringskällor avsnitt i User authentication guide.
Följande backends finns tillgängliga i django.contrib.auth.backends:
En basklass som tillhandahåller standardimplementationer för alla nödvändiga metoder. Som standard kommer den att avvisa alla användare och inte ge några behörigheter.
Asynkron version: aget_user_permissions()
Returnerar en tom uppsättning.
funktionen aget_user_permissions() har lagts till.
Asynkron version: aget_group_permissions()
Returnerar en tom uppsättning.
funktionen aget_group_permissions() har lagts till.
Asynkron version: aget_all_permissions()
Använder get_user_permissions() och get_group_permissions() för att hämta den uppsättning behörighetssträngar som user_obj har.
funktionen aget_all_permissions() har lagts till.
Asynkron version: ahas_perm()
Använder get_all_permissions() för att kontrollera om user_obj har behörighetssträngen perm.
funktionen ahas_perm() har lagts till.
Detta är den standardautentiseringsbackend som används av Django. Den autentiserar med hjälp av referenser som består av en användaridentifierare och ett lösenord. För Djangos standardanvändarmodell är användaridentifieraren användarnamnet, för anpassade användarmodeller är det fältet som anges av USERNAME_FIELD (se Anpassa användare och autentisering).
Den hanterar också standardbehörighetsmodellen enligt definitionen för User och PermissionsMixin.
has_perm(), get_all_permissions(), get_user_permissions(), och get_group_permissions() tillåter att ett objekt skickas som en parameter för objektspecifika behörigheter, men denna backend implementerar dem inte annat än att returnera en tom uppsättning behörigheter om obj är inte None.
with_perm() tillåter också att ett objekt skickas som en parameter, men till skillnad från andra metoder returnerar den en tom frågeuppsättning om obj är inte None.
Asynkron version: aauthenticate()
Försöker autentisera username med password genom att anropa User.check_password. Om inget username anges försöker den hämta ett användarnamn från kwargs med hjälp av nyckeln CustomUser.USERNAME_FIELD. Returnerar en autentiserad användare eller None.
request är en HttpRequest och kan vara None om den inte tillhandahölls till authenticate() (som skickar den vidare till backend).
funktionen aauthenticate() har lagts till.
Asynkron version: aget_user_permissions()
Returnerar den uppsättning behörighetssträngar som user_obj har från sina egna användarbehörigheter. Returnerar en tom uppsättning om is_anonymous eller is_active är False.
funktionen aget_user_permissions() har lagts till.
Asynkron version: aget_group_permissions()
Returnerar den uppsättning behörighetssträngar som user_obj har från behörigheterna för de grupper de tillhör. Returnerar en tom uppsättning om is_anonymous eller is_active är False.
funktionen aget_group_permissions() har lagts till.
Asynkron version: aget_all_permissions()
Returnerar den uppsättning behörighetssträngar som user_obj har, inklusive både användar- och gruppbehörigheter. Returnerar en tom uppsättning om is_anonymous eller is_active är False.
funktionen aget_all_permissions() har lagts till.
Asynkron version: ahas_perm()
Använder get_all_permissions() för att kontrollera om user_obj har behörighetssträngen perm. Returnerar False om användaren inte är is_active.
funktionen ahas_perm() har lagts till.
Asynkron version: ahas_module_perms()
Returnerar om user_obj har några behörigheter för appen app_label.
funktionen ahas_module_perms() har lagts till.
Returnerar om användaren tillåts att autentisera sig. För att matcha beteendet hos AuthenticationForm som förbjuder inaktiva användare från att logga in, returnerar denna metod False för användare med is_active=False. Anpassade användarmodeller som inte har ett fält is_active är tillåtna.
Returnerar alla aktiva användare som har behörigheten perm antingen i form av "<app label>.<permission codename>" eller en Permission-instans. Returnerar en tom frågeuppsättning om inga användare som har perm hittas.
Om is_active är True (standard) returneras endast aktiva användare, eller om False returneras endast inaktiva användare. Använd None för att returnera alla användare oavsett aktivt tillstånd.
Om include_superusers är True (standard) kommer resultatet att inkludera superanvändare.
Samma som ModelBackend förutom att den inte avvisar inaktiva användare eftersom user_can_authenticate() alltid returnerar True.
När du använder den här backend kommer du sannolikt att vilja anpassa AuthenticationForm som används av LoginView genom att åsidosätta confirm_login_allowed()-metoden eftersom den avvisar inaktiva användare.
Använd denna backend för att dra nytta av autentisering som hanteras externt till Django. Den autentiserar med användarnamn som skickas i request.META['REMOTE_USER']. Se dokumentationen Autenticering mot REMOTE_USER.
Om du behöver mer kontroll kan du skapa din egen autentiseringsbackend som ärver från den här klassen och åsidosätta dessa attribut eller metoder:
True eller False. Bestämmer om ett användarobjekt skapas eller inte om det inte redan finns i databasen Standardvärdet är True.
Asynkron version: aauthenticate()
Det användarnamn som anges som remote_user anses vara betrott. Denna metod returnerar användarobjektet med det angivna användarnamnet och skapar ett nytt användarobjekt om create_unknown_user är True.
Returnerar None om create_unknown_user` är False och ett User-objekt med det angivna användarnamnet inte finns i databasen.
request är en HttpRequest och kan vara None om den inte tillhandahölls till authenticate() (som skickar den vidare till backend).
funktionen aauthenticate() har lagts till.
Utför eventuell rensning av username (t.ex. borttagning av LDAP DN-information) innan det används för att hämta eller skapa ett användarobjekt. Returnerar det rensade användarnamnet.
Asynkron version: aconfigure_user()
Konfigurerar användaren vid varje autentiseringsförsök. Den här metoden anropas omedelbart efter att användaren som autentiseras har hämtats eller skapats och kan användas för att utföra anpassade konfigurationsåtgärder, t.ex. att ange användarens grupper baserat på attribut i en LDAP-katalog. Returnerar användarobjektet. När hämtning eller skapande av en användare anropas från en synkron kontext anropas configure_user, aconfigure_user anropas från asynkrona kontexter.
Inställningen kan utföras antingen en gång när användaren skapas (created är True) eller på befintliga användare (created är False) som ett sätt att synkronisera attribut mellan fjärrsystemet och det lokala systemet.
request är en HttpRequest och kan vara None om den inte tillhandahölls till authenticate() (som skickar den vidare till backend).
funktionen aconfigure_user() har lagts till.
Returnerar om användaren får autentisera sig. Denna metod returnerar False för användare med is_active=False. Anpassade användarmodeller som inte har ett fält is_active är tillåtna.
Samma som RemoteUserBackend förutom att den inte avvisar inaktiva användare eftersom user_can_authenticate alltid returnerar True.
Asynkron version: aget_user()
Returnerar den användarmodellinstans som är associerad med den givna request-sessionen.
Den kontrollerar om den autentiseringsbackend som lagrats i sessionen finns i AUTHENTICATION_BACKENDS. Om så är fallet använder den backendets metod get_user() för att hämta användarmodellens instans och verifierar sedan sessionen genom att anropa användarmodellens metod get_session_auth_hash(). Om verifieringen misslyckas och SECRET_KEY_FALLBACKS tillhandahålls, verifieras sessionen mot varje reservnyckel med get_session_auth_fallback_hash().
Returnerar en instans av AnonymousUser om den autentiseringsbackend som lagras i sessionen inte längre finns i AUTHENTICATION_BACKENDS, om en användare inte returneras av backendets get_user()-metod, eller om sessionens autentiseringshash inte valideras.
aug. 11, 2025