Ich versuche, eine Website, wo die nav-Bar Gegenstände auf der Rolle des Benutzers abhängig zu entwickeln, die angemeldet sindAurelia: wie Sitzungen zu verwalten
Als Patrick Walter auf seinem blog vorgeschlagen, dachte ich. um eine session.js-Datei zu erstellen, 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 die Schaltfläche zum Aktualisieren angeklickt habe ... Tatsächlich erstellt es ein neues Sitzungsobjekt und ich verliere alle Informationsspeicher im vorherigen.
Ich habe in der docs die Singleton-Methode gesehen, aber ich bin mir nicht sicher, wie man es benutzt. Wenn ich es in meinen Code wie unten einfügen, erhalte ich die Nachricht: aurelia.use.singleton is not a function
.
Meine letzte Idee wäre, die Rolle/den Benutzernamen zu verschlüsseln und die Sitzung des Browsers zu verwenden, um die Informationen zu speichern. Aber ich wollte erfahreneren Entwicklern ihre Meinung zu dem Thema geben.
Danke für Ihre Hilfe!
EDIT: Hier ist mein Code für session.js
export class Session {
username = '';
role = '';
reset() {
console.log('Resetting session');
this.username = '';
this.role = '';
};
}
Und das ist, wie ich es injizieren:
import {Session} from './services/session';
@inject(Session)
export class RoleFilterValueConverter {
constructor(session) {
console.log('Hello from RoleFilter constructor', session)
this.session = session;
};
toView(routes, role) {
console.log('Hello from view', role, this.session)
if (this.session.role == 'Superuser')
return routes;
return routes.filter(r => {
var res = !r.config.role || (r.config.role == this.session.role);
return res
});
}
}