Zuerst habe ich put_session
zum Speichern der Benutzer-ID verwendet, da der Sitzungshash nicht manipuliert werden kann. Es scheint jedoch so zu sein, dass Sitzungscookies nur während der Browsersitzung bestehen bleiben. Wenn der Benutzer den Browser erneut öffnet, ist er verschwunden und der Benutzer muss sich erneut anmelden.
Ich habe gelesen, dass eine andere Option darin besteht, für jeden Benutzer ein sicheres zufälliges Token zu generieren und es in der Datenbank zu speichern und es in einen normalen Cookie mit hohem Ablaufdatum zu setzen. Da jedoch dieser Cookie keinen Manipulationsschutz AFAIK hat (aber ich könnte falsch liegen) und die Verbindung nicht immer https ist, denke ich, dass jeder, der http in der Mitte zwischen dem Benutzer und dem Server hört, in der Lage wäre, die Benutzersitzung zu entführen .
Daher lautet die Frage: Wie kann ich die Benutzer-ID in einer Sitzung auf sichere Weise persistieren? Oder was sind die anderen Möglichkeiten?
Der Standard-Cookie "max-age" ist bis zum nächsten browwser. Sie sollten dem Cookie einen wirklich hohen "max_age" -Wert geben: Ссылка
Ein anderer Weg, der "max_age" einstellt, kann ich nicht in offiziellen Dokumenten finden, aber es funktioniert:
%Vor%Ich implementiere "Remember me" auf meiner Website. Mit Phoenix.Token kann der Cookie von Clients gelesen werden. Also benutze ich MessageEncryptor ( Ссылка ) um das zu verschlüsseln und zu signieren Fahrkarte. Dann benutze ich put_resp_cookie mit einem hohen Max-Alter, um das verschlüsselte Ticket zum Cookie zu machen. Bitte beachten Sie, dass der IE keine Höchstalterszahl unterstützt, sodass "Remember me" bei IE nicht funktioniert.
Tags und Links elixir phoenix-framework