Django-Benutzerauthentifizierung (Auth)-Komponente

Die Django-Benutzerauthentifizierung (Auth)-Komponente wird im Allgemeinen für die Benutzeranmeldung und -registrierung verwendet, um zu bestimmen, ob der aktuelle Benutzer gültig ist, und um auf eine Seite für erfolgreiche oder fehlgeschlagene Anmeldung weiterzuleiten.

Die Django-Benutzerauthentifizierung (Auth)-Komponente erfordert das Importieren des auth-Moduls:

# 认证模块
from django.contrib import auth

# 对应数据库
from django.contrib.auth.models import User

Der Rückgabewert ist ein Benutzerobjekt.

Drei Methoden zum Erstellen eines Benutzerobjekts:

  • create(): Erstellt einen regulären Benutzer, wobei das Passwort im Klartext vorliegt.
  • create_user(): Erstellt einen regulären Benutzer, wobei das Passwort im Chiffretext vorliegt.
  • create_superuser(): Erstellt einen Superuser, wobei das Passwort im Chiffretext vorliegt, und es muss zusätzlich ein E-Mail-Parameter übergeben werden.

Parameter:

  • username: Benutzername.
  • password: Passwort.
  • email: E-Mail (Die Methode create_superuser erfordert einen zusätzlichen E-Mail-Parameter).
from django.contrib.auth.models import User 
User.objects.create(username='runboo',password='123')

from django.contrib.auth.models import User 
User.objects.create_user(username='runbooo',password='123')

from django.contrib.auth.models import User 
User.objects.create_superuser(username='runboooo',password='123',email='[email protected]')

Verwenden Sie die Methode authenticate(), um den Benutzernamen und das Passwort des Benutzers zu überprüfen und das Benutzerobjekt aus der Tabelle auth_user herauszufiltern.

Vor der Verwendung müssen Sie importieren:

from django.contrib import auth

Parameter:

  • username: Benutzername
  • password: Passwort

Rückgabewert:Wenn die Verifizierung erfolgreich ist, wird das Benutzerobjekt zurückgegeben; andernfalls wird None zurückgegeben.

Beispiel

def login(request):
    if request.method == "GET":
        return render(request, "login.html")
    username = request.POST.get("username")
    password = request.POST.get("pwd")
    valid_num = request.POST.get("valid_num")
    keep_str = request.session.get("keep_str")
    if keep_str.upper() == valid_num.upper():
        user_obj = auth.authenticate(username=username, password=Passwort)
        print(user_obj.username)

Fügen Sie eine Sitzung für den erfolgreich verifizierten Benutzer hinzu und weisen Sie request.user dem Benutzerobjekt zu.

Verwenden Sie die login()-Methode, um sich anzumelden.

Vor der Verwendung müssen Sie importieren:

from django.contrib import auth

Parameter:

  • request: Benutzerobjekt

Rückgabewert: None

Beispiel

def login(request):
    if request.method == "GET":
        return render(request, "login.html")
    username = request.POST.get("username")
    password = request.POST.get("pwd")
    valid_num = request.POST.get("valid_num")
    keep_str = request.session.get("keep_str")
    if keep_str.upper() == valid_num.upper():
        user_obj = auth.authenticate(username=username, password=Passwort)
        print(user_obj.username)
        if not user_obj:
            return redirect("/login/")
        else:

            auth.login(request, user_obj)
            path = request.GET.get("next") or "/index/"
            print(path)
            return redirect(path)
    else:
        return redirect("/login/")

Zum Abmelden eines Benutzers verwenden Sie die logout()-Methode, die Sitzungsinformationen löschen und request.user auf einen anonymen Benutzer setzen muss.

Vor der Verwendung müssen Sie importieren:

from django.contrib import auth

Parameter:

  • request: Benutzerobjekt

Rückgabewert: None

Beispiel

def logout(request):
    ppp = auth.logout(request)
    print(ppp) # None
    return redirect("/login/")

Richten Sie einen Dekorator ein und wenden Sie ihn einheitlich auf Seiten an, für die eine erfolgreiche Anmeldung erforderlich ist, bevor auf sie zugegriffen werden kann.

Vor der Verwendung müssen Sie importieren:

from django.contrib.auth.decorators import login_required

Beispiel

from django.contrib.auth.decorators import login_required @login_required
def index(request):
  return HttpResponse("index page...")

Legen Sie fest, von welcher Seite aus der Benutzer zugegriffen hat, damit der Benutzer nach erfolgreicher Anmeldung zu dieser Seite zurückkehrt.

Analyse:

Wenn ein Benutzer eine Seite besucht und nicht angemeldet ist, gibt Django die Anmeldeseite an den Benutzer zurück.

Zu diesem Zeitpunkt hat die URL der Login-Seite einen Parameter dahinter: next=die URL der Seite, die der Benutzer besucht hat.

Setzen Sie daher die URL, zu der nach erfolgreicher Anmeldung weitergeleitet werden soll, als Wert des next-Parameters.

Wenn der Benutzer jedoch die Login-Seite (logi) direkt von Anfang an aufruft, liefert request.GET.get("next") keinen Wert; fügen Sie daher danach "or" hinzu, um eine benutzerdefinierte Rückgabeseite festzulegen.

Beispiel

# Wenn Sie direkt login eingeben, erhält get() keinen Wert; path kann angepasst werden, um die zurückgegebene Seite festzulegen.
path = request.GET.get("next") or "/index/"
return redirect(path)

Weitere Erweiterungen