Middleware JWT überprüfung

01/12/2021 22:53 Cc_Cc_Cc#1
Guten Tag,

wenn sich jemand anmeldet auf meiner Seite, dann bekommt er ein Cookie mit dem Wert des JWT.

Jetzt will ich natürlich sagen, dass wenn er auf die Login seite geht, dass es nicht erlaubt ist. (Da er ja schon angemeldet ist).

Jetzt ist meine Frage reicht das wenn ich nach dem Reqeuest header Frage und schaue ob der Token vorhanden ist. Falls Ja dann sollte logischerweise kein Zutritt zum Login sein. Arbeite aber zum ersten mal mit JWT deswegen wollte ich Fragen ob man das so auch macht oder gibt es einen anderen/besseren weg?

mfg
01/13/2021 11:26 Mad0ck#2
Hab leider keinerlei erfahrung mit JWT, darum will ich da nichts schreiben.
Sowie ich es kurz rausgelesen habe sollte der Token unique sein, also solltest du auf den prüfen können.

Würde aber nicht nur prüfen ob er nen Wert hat oder nicht.
Klingt irgendwie falsch für mich.

Aber wie gesagt würde da auf wem warten der sich da besser auskennt :'D




Ich kann dir nur sagen, dass man in React zB nen state " isLoggedIn: true/false " setzen kann.

Dann erübrigt sich die Frage ob man eingeloggt ist oder nicht.

In php kann man das glaub ich mit sessions lösen (Kann mich grau dran Erinnerung das ich das damals so in meiner Diplomarbeit gemacht habe)
01/17/2021 20:04 Legithos#3
Wieso setzt du beim Login keine Session (auch für spätere Zwecke um damit zu arbeiten) und fragst auf der Login-Seite ab, ob die Session schon gesetzt ist ?

Du hast index.php als Login-Seite. Beim Login kommt man auf home.php. Während des Login-Prozesses wird - falls noch nicht vorhanden - eine Session ( z.B. $_SESSION["user"] = $userid; ) gesetzt. Wenn du von home.php wieder auf Index.php musst du dann entweder (falls dies als Logout dienen soll) die Session kaputt machen oder falls die Session vorhanden ist auf home.php weiterleiten.

Ähnliches Prinzip findest auf auch beim "keep me loged in"-Button: [Only registered and activated users can see links. Click Here To Register...]
01/23/2021 11:15 Flaymerino#4
Also (fast) jede Sprache bietet dir Möglichkeiten die Session eines jeden Benutzers festzuhalten.
In dieser Session kannst du viele verschiedene Dinge abspeichern.
Wenn der User bereits eingeloggt ist, dann kannst du das in der Session sehen, sofern du eine Property in deinem Objekt deklariert und definiert hast.

In deinen Methoden, in modernen OOP-Programmiersprachn hat man eine Initializable-Methode die beim Aufruf z.B. einer Komponente in Angular etc. andere Methoden aufruft und deren Code ausführt.
Dort kannst du dann weiterhin bestimmen was genau passieren soll.
Prinzipiell gibt es sehr viele Möglichkeiten wie man Probleme löst.
Welche für dich am besten ist musst du selber entscheiden. :)

Ich weiß nicht ob dir das geholfen hat, aber bei Fragen gerne melden. ^^
01/24/2021 11:14 Cc_Cc_Cc#5
Quote:
Originally Posted by Flaymerino View Post
Also (fast) jede Sprache bietet dir Möglichkeiten die Session eines jeden Benutzers festzuhalten.
In dieser Session kannst du viele verschiedene Dinge abspeichern.
Wenn der User bereits eingeloggt ist, dann kannst du das in der Session sehen, sofern du eine Property in deinem Objekt deklariert und definiert hast.

In deinen Methoden, in modernen OOP-Programmiersprachn hat man eine Initializable-Methode die beim Aufruf z.B. einer Komponente in Angular etc. andere Methoden aufruft und deren Code ausführt.
Dort kannst du dann weiterhin bestimmen was genau passieren soll.
Prinzipiell gibt es sehr viele Möglichkeiten wie man Probleme löst.
Welche für dich am besten ist musst du selber entscheiden. :)

Ich weiß nicht ob dir das geholfen hat, aber bei Fragen gerne melden. ^^
Der User soll ja eingeloggt bleiben, deswegen muss ich ja ein Cookie mit dem JWT speichern oder lieg ich falsch?^^ Und danke für eure Anworten
01/24/2021 11:52 Flaymerino#6
Quote:
Originally Posted by Cc_Cc_Cc View Post
Der User soll ja eingeloggt bleiben, deswegen muss ich ja ein Cookie mit dem JWT speichern oder lieg ich falsch?^^ Und danke für eure Anworten
Huhu,

brauchst du nicht, weil die Session solange bestehen bleibt bis der User den Browser schließt oder sich abmeldet. Wann was getriggert wird musst du coden.

Die Tokens würde ich mir ehrlich gesagt Backendseitig generieren lassen, wenn du die unbedingt brauchst. Und im Frontend mit einen Service an den Endpunkt abfangen und setzen.

Aber das kommt auch auf deinen Stand an wie weit du in der Programmierung bist.
Webentwicklung ist entgegen einiger Behauptungen durchaus sehr komplex. Z.B die Entwicklung eines Webshops (stell dir mal Amazon vor) gehört mit zu den komplexesten und aufwendigsten Themen.
Aber mit Fleiß und Leidenschaft geht alles :mofo:
Die Entwicklung lebt von der Community für die ich mich als angehender .Net- /Java- /Angular- Entwickler sehr begeistere!


Bei Fragen melde dich. :)
01/25/2021 21:57 Legithos#7
Quote:
Originally Posted by Cc_Cc_Cc View Post
Der User soll ja eingeloggt bleiben, deswegen muss ich ja ein Cookie mit dem JWT speichern oder lieg ich falsch?^^ Und danke für eure Anworten
Bei einem "normalen" Login solltest du Sessions statt Cookies benutzen!
01/27/2021 12:35 Cc_Cc_Cc#8
Quote:
Originally Posted by Legithos View Post
Bei einem "normalen" Login solltest du Sessions statt Cookies benutzen!
Hi, das habe ich auch sonst gemacht, aber wie mache ich das der User dann angemeldet bleibt beispielsweise bei einem "Remeber me" Button. Viele groß-Unternehmen machen das genauso
01/29/2021 19:24 Legithos#9
Quote:
Originally Posted by Cc_Cc_Cc View Post
Hi, das habe ich auch sonst gemacht, aber wie mache ich das der User dann angemeldet bleibt beispielsweise bei einem "Remeber me" Button. Viele groß-Unternehmen machen das genauso
Hab dir den Link schon geschickt:

[Only registered and activated users can see links. Click Here To Register...]

Kurz:

- Beim normalen Login (wenn der Abgleich zwischen Benutzername und Passwort bei der Eingabe mit Benutzername und Passwort aus der Datenbank übereinstimmen) speicherst du zb die userid des Benutzers in einer Session (zb $_SESSION["userid"] = $userid).

- Beim "eingeloggt bleiben" speicherst du zusätzlich einen Cookie, welcher die userid und eine Verschlüsselung enthält. Gleichzeitig speicherst du die Verschlüsselung und die userid in einer Datenbanktabelle.

- Wenn jemand deine Seite besucht, schaust du, ob der Cookie (userid und Verschlüsselung) existiert UND mit einem deiner Datenbankeinträge aus der Tabelle übereinstimmt und weißt ihm dann die userid zu = eingeloggt!

- Zum Schluss noch eine Weiterleitung auf deine Sichere Seite (also wo man eingeloggt sein muss), sobald ein Besucher auf deiner Startseite eine userid-Session zugewiesen (siehe obere Punkte) bekommen hat.