Wie erstelle ich Middleware, um die Benutzerberechtigungen in Django zu überprüfen?Python

Python-Programme
Guest
 Wie erstelle ich Middleware, um die Benutzerberechtigungen in Django zu überprüfen?

Post by Guest »

Ich versuche, ein benutzerdefiniertes Adminpanel in Django zu erstellen. Ich kann dort Benutzer erstellen und überprüfen, ob der Benutzer_admin ist oder nicht. Wenn der Benutzer kein Administrator ist, sollte er die Adminpanel-Seite nicht besuchen und nichts ändern können.
Ich muss Middleware erstellen, um zu überprüfen, ob der Benutzer Administrator ist oder nicht, und wenn nicht, leiten Sie ihn auf die Startseite weiter. Ich denke, ich sollte @permission_required verwenden, bin mir aber nicht sicher, wie ich es in Middleware verwenden soll.
Dies ist eine Funktion zum Erstellen eines neuen Benutzers:

Code: Select all

# views.py
def createNewUser(request):
if request.method == 'POST':
user = User.objects.create(username=request.POST.get('username'),
email=request.POST.get('email'),
password=request.POST.get('password'))
if request.POST.get('is_admin') == 'True':
is_admin = 'True'
else:
is_admin = 'False'
user.user_permissions.clear()
user.save()
useraccount = UserAccount.objects.create(user=user, is_admin=is_admin)
useraccount.save()
return redirect('users')
return render(request, 'adminpanel/create_user.html', {})
Dieser Benutzer kann Administrator sein. Wenn ich ein Kontrollkästchen nicht ankreuze, ist er kein Administrator und darf auf dieser Seite nichts tun. Ich lösche einfach alle Berechtigungen. (Ich weiß, dass es vielleicht besser ist, bestimmte Berechtigungen zu entfernen als alle, aber das ist nur ein Beispiel)
Jetzt muss ich seine Berechtigungen vor jeder Funktion überprüfen:

Code: Select all

@permission_required('poll.view_category', login_url='home')
def home(request):
return render(request, 'adminpanel/main.html', {})
Wie verwendet man diesen Dekorator in Middleware? (Es sollte nur in Adminpanel-Anfragen aufgerufen werden)
Und ist es besser, funktions- oder klassenbasierte Middleware zu verwenden? Was ist der Unterschied?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post