Aurelia аутентификация: как получить идентификатор пользователя
Я использую библиотеку aurelia-auth в новом проекте. Пока все кажется правильным, но я не могу отобразить информацию о пользователе на панели навигации.
Библиотека предоставляет некоторые функции, которые предоставляют такую информацию, например, getTokenPayload()
, Я пытаюсь получить доступ к этой информации, чтобы показать идентификатор пользователя или имя пользователя на панели навигации.
Я видел, что другие свойства (такие как isAuthenticated()
) осуществляется доступ таким образом:
nav-bar.html:
<ul if.bind="isAuthenticated" class="nav navbar-nav navbar-right">
<li><a href="/#/logout">Logout</a></li>
</ul>
nav-bar.js:
export class NavBar {
...
get isAuthenticated() {
return this.auth.isAuthenticated();
};
Я не могу понять, как я могу отобразить на панели навигации идентификатор пользователя (полученный через getTokenPayload()
функция), как только пользователь был аутентифицирован.
1 ответ
Ты можешь позвонить getTokenPayload
в attached
обратный вызов для NavBar
(вы, вероятно, хотели бы позвонить isAuthenticated
сначала проверить, если пользователь аутентифицирован). Установите свойство на вашем NavBar
ВМ для полезной нагрузки токена, а затем используйте привязку данных для привязки к свойству идентификатора пользователя.
Затем установите EventAggregator
подписка в NavBar
прикреплен обратный звонок, чтобы подписаться на правильный auth
событие (возможно 'auth:authenticate'
) и позвоните getTokenPayload
в обратном вызове для этой подписки, а затем установите свойство VM. Это обеспечит обновление свойства при изменении информации об аутентификации.
Вы хотите подписаться на 'auth:logout'
событие и сбросьте свойство VM, которое вы установили выше. Установите эту подписку в attached
обратный звонок также.
Наконец, убедитесь, что эти подписки detached
обратный вызов NavBar
VM.