Aurelia: Wie man Sitzungen verwaltet

8

Ich versuche eine Website zu entwickeln, auf der die Navigationsleiste von der Rolle des angemeldeten Benutzers abhängt.

Wie Patrick Walter in seinem Blog vorgeschlagen hat, habe ich mir überlegt, eine session.js-Datei, in der ich Informationen über den aktuellen Benutzer speichern würde: seinen Benutzernamen und seine Rolle. Ich würde dann diese Datei in nav-bar.js injizieren und einen Filter für die Routen erstellen, auf die der Benutzer keinen Zugriff hat. Alles hat gut funktioniert, bis ich den Refresh-Button gedrückt habe ... Tatsächlich erstellt es ein neues Session-Objekt und ich verliere alle Informationsspeicher im vorherigen.

Ich habe in den Dokumenten die Singleton-Methode gesehen, aber ich weiß nicht, wie ich sie benutzen soll. Wenn ich es in meinen Code wie unten einfügen, erhalte ich die Nachricht: aurelia.use.singleton is not a function .

%Vor%

Meine letzte Idee wäre, die Rolle / den Benutzernamen zu verschlüsseln und die Sitzung des Browsers zum Speichern der Informationen zu verwenden. Aber ich wollte erfahreneren Entwicklern ihre Meinung zu dem Thema geben.

Danke für Ihre Hilfe!

BEARBEITEN: Hier ist mein Code für session.js

%Vor%

Und so spritze ich es ein:

%Vor%     
Gpack 19.08.2015, 02:37
quelle

2 Antworten

5

Im Haupteingangspunkt (nehmen wir an, es ist index.html ) sollten Sie etwas wie folgt haben:

%Vor%

Dies importiert die gesamte Aurelia-Umgebung und wenn es export function configure(aurelia) { ... } erreicht, sollte es eine Instanz vom Typ Aurelia übergeben und es an den Parameter aurelia binden und sollte Ihren aurelia.use.singleton is not a function. -Fehler auflösen. Danach sollte in Ihrer session.js -Datei bei Verwendung von @inject(Session) dieselbe Instanz übergeben werden, die Sie beim Start deklariert haben.

Ich habe auch ein Singleton-Session-Objekt zum Speichern von Benutzerdaten implementiert und diese Methode gewählt, weil es bequemer ist, sich auf die Abhängigkeitsinjektion zu verlassen, anstatt immer eine Methode aufzurufen, um Benutzerdaten von einem Cookie abzurufen.

    
Laurentiu Stamate 21.08.2015, 00:59
quelle
2

Obwohl Laurentius Antwort nicht schlecht ist, gibt es bessere Möglichkeiten, dies zu handhaben, die Ihrer App Komplexität hinzufügen.

Sie müssen dies nicht als Singleton angeben. Diese spezielle Funktion ist mehr für einen Randfall, in dem Sie ein bestimmtes Element dem Container für die Abhängigkeitsinjektion als Singleton vor dem Start bereitstellen möchten.

Tatsächlich behandelt das Aurelia Dependency-Injection-Framework alle Module als Singletons, wenn nicht anders angegeben. Daher sollte der Code so funktionieren, wie Sie ihn geschrieben haben, ohne die configure-Funktion.

Ich habe einen ausführlichen Blog geschrieben, den Sie hier vielleicht hilfreich finden: Ссылка

    
Matthew James Davis 22.09.2015 16:45
quelle

Tags und Links