2017-06-22 6 views
-1

ich eine Funktion erstellt, die Benutzer sein Profil bearbeiten können wie folgt:Prevent Benutzer andere Benutzer-Profil bearbeiten

@count.route('/employees/edit/<int:id>', methods=['GET', 'POST']) 
@login_required 
def edit_employee(id): 
    """ 
    Edit a employee 
    """ 

    add_employee = False 

    employee = Employee.query.get_or_404(id) 
    form = EmployeeForm(obj=employee) 
    if form.validate_on_submit(): 
     employee.name = form.name.data 
     employee.description = form.description.data 
    return render_template('admin/employees/employee.html', 
    add_employee=add_employee, form=form, title="Edit Employee") 

Aber das Problem ist, dass, wenn der Benutzer ändert die ID in der URL bloßen Zufalls es die hat Möglichkeit, das Profil eines anderen Benutzers zu ändern. Ich suche nach einer Lösung, um das Token zu verwenden, aber es ist mir nicht gelungen.

+0

Erstellen Sie eine andere Route wirthout' ', erhalten Sie ID aus der Sitzung oder verschlüsselten Cookie, abhängig davon, wo Sie derzeit geloggten Benutzerdaten speichern. Beschränken Sie Ihre aktuelle Route auf Administratoren. –

Antwort

0

Flask-Login liefert einen Proxy namens current_user, repräsentiert den aktuell angemeldeten Benutzer. Sie können damit sicherstellen, dass der Benutzer nur sein Profil bearbeiten kann. Sie können den Benutzer zur Indexseite umleiten, wenn er das Profil eines anderen Benutzers bearbeiten möchte.

0

Eine einfache Lösung besteht darin, Sitzungen zu verwenden, damit Sie wissen, wer der aktuell angemeldete Benutzer ist. Vergleichen Sie dann und sehen Sie, ob der aktuell angemeldete Benutzer versucht, sein eigenes Profil zu bearbeiten, wenn er nicht umgeleitet wird oder eine Fehlermeldung anzeigt

Verwandte Themen