Sessionabspeicherung beim Login

Django, Flask, Bottle, WSGI, CGI…
Antworten
Bindl
User
Beiträge: 70
Registriert: Donnerstag 27. Oktober 2016, 11:48

Hi zusammen,

ich möchte beim Loginvorgang ein paar Userdaten die in der Datenbanktabelle user abgespeichert sind in der session abspeichern.

Der Username ist ja recht einfach da dieser ja beim Login in das Formular eingegeben wird.
Dann mache ich

Code: Alles auswählen

session['username'] = request.form['logname']
Nun möchte ich weitere Dinge beim Login in der session abspeichern die ja in keinem Formular beim Login abgespeichert werden.

Muss ich dazu eine SQL SELECT Abfrage mache und dass Ergebnis dann in der session speichern oder gibt es da eine bessere Variante ?

Danke schon für die Hilfe
BlackJack

@Bindl: Warum willst Du denn etwas in der Session speichern was schon in der Datenbank gespeichert ist? Das führt doch letztendlich nur dazu das die gleiche Information zweimal gespeichert ist, und gegebenenfalls sogar Probleme machen kann, weil man immer beides gleich halten muss.
Bindl
User
Beiträge: 70
Registriert: Donnerstag 27. Oktober 2016, 11:48

Hi,

ich möchte auf einem Webseite Eingabeformulare haben.
Jedoch soll nicht jeder die gleichen Anzahl an Formularen haben, da jeder verschiedene Rechte hat.
Also möchte ich auf der Webseite mit einer if Abfrage vorgeben wer welche Formulare hat.
Also irgendwie so,
if rights == c:
x Formulare
else:
y Formulare

Irgendwie muss ich ja im HTML Code dieser Information welche Rechte der jeweilige User hat angeben.
Dachte mir das die session dafür sinnvoll wäre.
Wenn das nicht der Fall kann mir vllt jmd sagen was der richtige Weg wäre?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bindl: wenn Du prüfen willst, ob ein Nutzer das Recht hat, ein Formular zu sehen, dann machst Du dann die SQL-Abfrage in die User-Tabelle, wenn Du entscheiden mußt, ob sichtbar oder nicht.
Bindl
User
Beiträge: 70
Registriert: Donnerstag 27. Oktober 2016, 11:48

Hi,

kann man im HTML Code auch eine SQL abfrage machen ?

Ich dachte ich kann im HTML Code nur Python Syntax verwenden, also if, for usw..
Die SQL Abfragen habe ich immer in der Python Datei innerhalb der .py Datei gemacht.
Ich sollte vielleicht dazu sagen das ich mit Flask und PyCharm arbeite.
Kann mir vllt jmd kurz an einem Beispiel zeigen wie eine SQL Anfrage innerhalb des HTML Codes "auszusehen" hat?
Das würde mir echt weiterhelfen, da man z.B. eine if-Abfgrage ja auch mit {% kennzeichnen müssen und ich denke mal die SQL Abfrage wird auch etwas ähnliches benötigen.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bindl: die SQL-Abfrage wird natürlich in Python gemacht. Programm-Logik sollte nicht im HTML-Template stehen. Was versuchst Du eigentlich im HTML-Template zu machen?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist keine HTML Syntax, sondern die deines Template Systems. Und durch SQL abfragen kannst du Werte bestimmen und an dein Template übergeben (so wie zB den Usernamen), auf die da dann reagiert wird. ZB mit anzeigen eines Formularteils.
Bindl
User
Beiträge: 70
Registriert: Donnerstag 27. Oktober 2016, 11:48

Heißt das ich mache z.B. eine SELECT Abfrage und speichere das "Ergebnis" also den Datenbankeintrag in einer Variablen ab.
Sagen wir wir mal die Eintrag ist c und speichere diesen dann in der Variablen rechte ab.

Dann schreibe ich in der entsprechenden Webseite if rechte == c dann die entsprechenden Formulare, stimmt das?
BlackJack

@Bindl: `c` ist kein wirklich guter Name dafür und normalerweise ist so etwas ein Attribut auf dem Objekt das den Benutzer repräsentiert, denn das steht ja auch überlicherweise im Datensatz des Benutzers. Entweder direkt, oder als Fremdschlüssel in eine Tabelle wo Rechte abgelegt sind.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bindl: was meinst Du mit «entsprechender Webseite»? Die Antwort hängt ein bißchen davon ab, was Du konkret machen willst. Für kleine Felder, könnte man sowas mit {%if...} lösen, bei komplexeren Abfragen wird das schnell unübersichtlich.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Dann schreibe ich in der entsprechenden Webseite if rechte == c dann die entsprechenden Formulare, stimmt das?
Vereinfacht: ja. Konkret: siehe BlackJacks und Sirius3 Posts.

Und das steht _nicht_ ! auf der Webseite, sondern im Template, aus dem dann die HTML-Seite generiert wird. Das ist ein fundamentaler Unterschied und da solltest du unbedingt die korrekte Nomenklatur verwenden, besonders bei Fragen. Sonst ist das sehr irreführend.

Gruß, noisefloor
Antworten