Seite 1 von 1

Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 15:31
von Bindl
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

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 16:19
von 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.

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 16:34
von Bindl
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?

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 16:38
von Sirius3
@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.

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 16:56
von Bindl
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.

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 17:05
von Sirius3
@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?

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 17:25
von __deets__
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.

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 17:53
von Bindl
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?

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 18:27
von 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.

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 18:29
von Sirius3
@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.

Re: Sessionabspeicherung beim Login

Verfasst: Donnerstag 25. Mai 2017, 21:03
von noisefloor
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