Я пытаюсь разработать веб-сайт, где нав-бар элементы зависят от роли пользователя, вошедшего вAurelia: как управлять сеансами
Как Патрик Уолтер предложил на его blog, я думал. для создания файла session.js, где я буду хранить информацию о текущем пользователе: имя пользователя и роль. Затем я вставляю этот файл в nav-bar.js и создаю фильтр для маршрутов, к которым у пользователя нет доступа. Все работало нормально, пока я не нажал кнопку обновления ... На самом деле он создает новый объект сеанса, и я теряю все хранилище информации в предыдущем.
Я видел в методе singleton docs, но я не уверен, как его использовать. Если я вставляю его в свой код, например, ниже, я получаю сообщение: aurelia.use.singleton is not a function
.
import config from './auth-config';
export function configure(aurelia) {
console.log('Hello from animation-main config');
aurelia.use
.singleton(Session)
.standardConfiguration()
.developmentLogging()
.plugin('aurelia-animator-css')
.plugin('paulvanbladel/aurelia-auth', (baseConfig) => {
baseConfig.configure(config);
});
aurelia.start().then(a => a.setRoot());
}
export class Session {
username = '';
role = '';
reset() {
console.log('Resetting session');
this.username = '';
this.role = '';
};
}
Моя последняя идея состояла в том, чтобы зашифровать роль/имя пользователя и использовать сеанс браузера для хранения информации. Но я хотел попросить у более опытных разработчиков свое мнение по этой теме.
Спасибо за помощь!
EDIT: Вот мой код session.js
export class Session {
username = '';
role = '';
reset() {
console.log('Resetting session');
this.username = '';
this.role = '';
};
}
И это, как я впрыснуть его:
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
});
}
}